胖叽猪羊君 @ 2017-08-28 13:40:39
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
int cifang(int p)
{
int s=1;
for(int q=1;q<=p;q++)
s*=10;
return s;
}
int main()
{
char a[50000000];
int r,n=0,b,x[100]={0};
gets(a);
int len=strlen(a);
for(int i=len-1;i>=0;i--)
{
x[len-1-i]=a[i]-'0';
}
for(int j=0;j<=len-1;j++)
n+=a[j]*cifang(len-1);
for(int k=1;k<=b;k++)
{
for(int l=0;l<=len-1;l++)
{
x[l]*=n;
while(x[r+1]/10)
{
r=0;
x[r+1]+=x[r]/10;
x[r]%=10;
r++;
}
}
}
//其中少了得到a^b的因数和其除以9901的余数,不会了。
int h=100;
while(x[h]==0) h--;
for(int i=h;i>=0;i--) cout<<x[i];
return 0;
}
by Juanzhang @ 2018-07-30 15:31:44
数学方法
by John_zyj @ 2018-10-24 12:08:11
可以不用高精度