A. m的n次方
1000ms
1000ms
65535KB
64-bit integer IO format:
%lld Java class name:
Main
Font Size:
如果m和n都是整数,求m的n的次方(即m^n)的准确值。
Input
本题有多组输入数据。第一行是输入数据的组数T,每组数据占一行,为两个用空格隔开的整数m和n,1<=m<=100,0<=n<=100。
Output
对应每组数据,应输出一行,表示m^n的准确结果。
Sample Input
1
2 30
Sample Output
1073741824
Hint
可以考虑以下公式:
代码:
#include<stdio.h>
struct Bignum{
int len,s[500];
Bignum(){len=1,s[0]=1;}
void mul(int n){
for(int i=0;i<len;s[i++]*=n);
for(int i=0;i<len-1;i++)
if(s[i]>=100000)
s[i+1]+=s[i]/100000,s[i]%=100000;
if(s[len-1]>100000)
s[len]=s[len-1]/100000,s[len-1]%=100000,len++;
}
void print(){
printf("%d",s[--len]);
while(len--) printf("%05d",s[len]);
puts("");
}
};
int main(){ // 直接用大整数乘法,相信大家已经不陌生了。
int t,n,m;
for(scanf("%d",&t);t--;){
scanf("%d%d",&n,&m);
Bignum res;
while(m--) res.mul(n);
res.print();
}
return 0;
}