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;
}
本文介绍了一种解决大数幂次方运算的方法,利用结构化的Bignum类实现m的n次方的准确计算,适用于m和n均为1到100之间的整数情况。通过自定义的大数乘法,解决了传统数据类型无法处理的情况。
1791

被折叠的 条评论
为什么被折叠?



