您的位置:首页 > 其它

NYOJ---205题求余数

2011-12-20 21:22 204 查看
这个题需要一中新的思想才能够做出来。以前那种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;
}


想清楚之后就会感觉其实这个题真的没有什么难度。这个题其实还能发现一点就是数学中的很多简单的思想其实可以移植过来的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: