NYOJ---205题求余数

来源:互联网 发布:mastercam编程机床定义 编辑:程序博客网 时间:2024/06/06 13:10

这个题需要一中新的思想才能够做出来。以前那种for循环的思想到这里就肯定要死翘翘了。好了,废话少说,具体思路就是要先从前5位开始计算,对10003进行取余。然后对剩下的进行循环,取余的结果乘以10再加上下一位的数,再对10003进行取余。剩下的以此类推····其实就是模拟的手算的过程·······

原题地址:点击打开链接。

代码如下:

 #include<stdio.h>#include<string.h>int main(){   int len,m;   scanf("%d",&m);    while(m--)   { char a[1000001];      scanf("%s",a);   len=strlen(a);  int sum=0,i;  if(len<5)printf("%s\n",a);  if(len>=5)  {   sum=(a[0]-'0')*10000+(a[1]-'0')*1000+(a[2]-'0')*100+(a[3]-'0')*10+(a[4]-'0');sum%=10003;  for(i=5;i<len;i++)  { sum=(sum*10+(a[i]-'0'))%10003; }  printf("%d\n",sum);  }          }return 0;}        

想清楚之后就会感觉其实这个题真的没有什么难度。这个题其实还能发现一点就是数学中的很多简单的思想其实可以移植过来的。

原创粉丝点击