描述
已知长度最大为200位的正整数n,请求出2011^n的后四位。
格式
输入格式
第一行为一个正整数k,代表有k组数据(k≤200),接下来的k行,每行都有一个正整数n,n的位数≤200。
输出格式
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0。
样例
输入样例
3
5
28
792
输出样例
1051
81
5521
限制
时间限制: 1000 ms
内存限制: 65536 KB
这题用大整数+快速幂太过繁琐,用打表可以找出规律,循环周期为500
void change(char s[201],int a[201],int len){
for(int i=0;i<len;i++){
a[i]=s[len-i-1]-'0';
}
}
int main(){
int k,i;
char s[201];int a[201];
scanf("%d",&k);
while(k--){
scanf("%s",s);
int n=0,len=strlen(s);
memset(a,0,sizeof(a));
change(s,a,len);
n+=a[0];
n+=a[1]*10;
n+=a[2]*100;
n%=500;
int num=1;
for(i=0;i<n;i++){
num*=2011;
num%=10000;
}
printf("%d\n",num);
}
return 0;
}