nyoj205求余数(大整数求模)

来源:互联网 发布:电磁仿真软件 feko 编辑:程序博客网 时间:2024/06/04 23:19

求余数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数
输入
第一行有一个整数m(1<=m<=8),表示有m组测试数据;
随后m行每行有一个自然数n。
输出
输出n整除10003之后的余数,每次输出占一行。
样例输入
345465456541
样例输出
456948
#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);*/


0 0
原创粉丝点击