总时间限制:
1000ms
内存限制:
65536kB
描述
已知长度最大为200位的正整数n,请求出2011^n的后四位。
输入
第一行为一个正整数k,代表有k组数据,k<=200接下来的k行,
每行都有一个正整数n,n的位数<=200
输出
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0
样例输入
3 5 28 792
样例输出
1051 81 5521
代码:
#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cstdlib> using namespace std; char a[201]; int main() { int k; cin>>k; while(k--) { cin>>a; int len=strlen(a); if(len>=5) { int u=(a[len-3]-'0')*100+(a[len-2]-'0')*10+(a[len-1]-'0'),c=1; u%=500; for(int i=0;i<u;++i) { c*=2011; c%=10000; } cout<<c<<endl; } else { int u=atof(a),c=1; for(int i=0;i<u;++i) { c*=2011; c%=10000; } cout<<c<<endl; } } }