【题解】取余(2019青岛市程序设计竞赛)
【问题描述】
给你n个正整数a1,a2,..,an。
求(a1*a2*..an)%10007的值。
【输入】
第一行,n,表示整数的个数。
第二行,n个用空格隔开的正整数。
【输出】
一个整数,(a1*a2*..an)%10007的值。
【样例输入输出】
mod.in | mod.out |
2 10 20 | 200 |
【数据规模和约定】
30%的数据:a1*a2*..*an<2000000000;
100%的数据:n<=1000, 0<ai<=110。
【来源】
2019年青岛市程序设计竞赛试题(小学组)1T
比较简单的模拟题,难点在于数据范围。
如果用数论的知识就比较简单,(a*b)%p= (a%p * b%p)%p;
数据范围比较大的话用long long
【参考代码】
#include<iostream> using namespace std; long long a[1001]; long long n,ans=1; int main() { cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; a[i]=a[i]%10007; ans=ans*a[i]; } ans=ans%10007; cout<<ans; return 0; }
(adsbygoogle = window.adsbygoogle || []).push({});