青少年编程知识记录 codecoming

【题解】最小新整数

【问题描述】

第⼀⾏有x个正整数a1,a2,..,ax,

第⼆⾏有y个正整数b1,b2,...,by,

第三⾏有z个正整数c1,c2,...,cz,

假设第⼀⾏的x个正整数中的最⼤值为a、第⼆⾏的y个正整数中的最⼤值为b、第三⾏的z个正整数中

的最⼤值为c,

输出(a*b*c)%10007的结果。

【输⼊格式】:

第⼀⾏有x+1个正整数,每个数之间⼀个空格分隔。第⼀个数表⽰整数的个数x,后⾯的x个数表⽰

a1,a2,……ax。

第⼀⾏有y+1个正整数,每个数之间⼀个空格分隔。第⼀个数表⽰整数的个数y,后⾯的y个数表⽰

b1,b2,……by。

第⼀⾏有z+1个正整数,每个数之间⼀个空格分隔。第⼀个数表⽰整数的个数z,后⾯的z个数表⽰

c1,c2,……cz。

【输出格式】:

⼀个整数 是(a*b*c)%10007的值。

【样例输入】

3 2 1 3  4 5 3 2 1  2 1 2

【样例输出】

30

【数据规模和约定】

30%的数据:0<x,y,z<=1000, 0<a1,a2,...,ax,b1,b2,...,by,c1,c2,...,cz<=1e3;

80%的数据:0<x,y,z<=1000, 0<a1,a2,...,ax,b1,b2,...,by,c1,c2,...,cz<=1e6;

100%的数据:0<x,y,z<=1000, 0<a1,a2,…,ax,b1,b2,...,by,c1,c2,...,cz<=1e9。

(注意:1e3=10001e6=1000000 1e9=1000000000)

【题目分析】

  • 比较简单的数据计算题目,稍微难的就是数据范围。

  • 可以用(a*b)%p= (a%p*b%p)%p来进行简化


【参考答案】

#include<bits/stdc++.h>  using namespace std;  int main(){  	int x,y,z,a,b,c,max1=0,max2=0,max3=0;  	cin>>x;  	for(int i=0;i<x;i++){  		cin>>a;  		if(max1<a)  			max1=a;  	}   	cin>>y;  	for(int i=0;i<y;i++){  		cin>>b;  		if(max2<b)  			max2=b;  	}   	cin>>z;  	for(int i=0;i<z;i++){  		cin>>c;  		if(max3<c)  			max3=c;  	}   	cout<<(max1*max2*max3)%10007;  	return 0;  }





(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:题解目录 浏览: