【题目描述】
已知长度最大为200位的正整数n,请求出2011n的后四位。
【输入】
第一行为一个正整数k,代表有k组数据(k≤200),接下来的k行,每行都有一个正整数n,n的位数≤200。
【输出】
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0。
【输入样例】
3
5
28
792
【输出样例】
1051
81
5521
题目是高精度,所以要用字符串储存数字n
#include<iostream>
using namespace std;
int main()
{
int n,k,i;
int x,b,c;
cin>>k;
cin.get();
string s;
while(k--)
{
b=0,c=4;
cin>>s;
n=s.size();
if(n<=4) //判断 n位数是否大于4位
c=n;
for(i=n-c;i<n;i++) //若n大于四位,只取最后低四位,否则全取
b=b*10+s[i]-'0';
x=1;
for(i=1;i<=b;i++)
{
x=x*2011;
x=x%10000;
}
cout<<x<<endl;
}
return 0;
}
运行结果