求余数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数
-
输入
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
- 输出n整除10003之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出
-
4 5 6948
#include<stdio.h> #include<math.h> #include<string.h> int main() { int m,n,i,len,ans; char s[1000000]; scanf("%d",&m); while(m--) { ans=0; scanf("%s",s); len=strlen(s); for(i=0;i<len;i++) { ans=(int)(((long long)ans*10+s[i]-'0')%10003); } printf("%d\n",ans); } return 0; } /* 大整数求余数: 求模公式: (a+b)modn=((amodn)+(bmodn))modn; (a-b)modn=((amodn)-(bmodn)+n)modn ; (a*b)modn=(amodn)(bmodn)modn; 首先,把大整数写成自左向右的形式,如 1234=((1*10+2)*10+3)*10+4; 然后利用上面的公式,每步求模 ,例如: scanf("%s%d",n,&m); int len=strlen(n); int ans=0; for(i=0;i<len;i++) { ans=(int)(((long long)ans*10+n[i]-'0')%m); } printf("%d\n",ans); */
-
第一行有一个整数m(1<=m<=8),表示有m组测试数据;