1234:2011
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
已知长度最大为200位的正整数n,请求出2011n的后四位。
【输入】
第一行为一个正整数k,代表有k组数据(k≤200),接下来的k行,每行都有一个正整数n,n的位数≤200。
【输出】
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0。
【输入样例】
3
5
28
792
【输出样例】
1051
81
5521
1. #include <stdio.h> 2. #include <string.h> 3. int a[505],b[201]; 4. char s[201]; 5. int main(int argc, char *argv[]) 6. { 7. int n,m,t,i,j,sl; 8. i=0;t=2011; 9. do{ 10. i++;a[i]=t;t*=2011;t%=10000; 11. }while(t!=2011);//存储所有可能的后四位数 12. m=i;//储存循环周期 13. a[0]=a[i]; 14. //printf("%d\n",m); 15. scanf("%d",&n); 16. for(i=1;i<=n;i++){ 17. scanf("%s",s); 18. sl=strlen(s); 19. for(j=0;j<sl;j++)b[j+1]=s[j]-'0';//字符串转数组 20. t=0; 21. for(j=1;j<=sl;j++) t=(t*10+b[j])%m;//计算指数的周期余数 22. printf("%d\n",a[t]); 23. } 24. return 0; 25. }