求大数乘方的前n位数字(对数加快速幂)

2019-04-13 21:50发布

10的lga次方等于a  所以a的b次方相当于b*lga 得到一个指数gg  然后再求10的gg次方 再乘上10的n-1次方就是要的答案   思路都来自与学姐和大神 #include #include #include using namespace std; long long ks(long long n,long long m) { long long ant=1; while(m>0) { if(m&1)//判断是否是偶数 ant*=n%1000; n=n*n%1000; m>>=1;//相当于除2 } return ant; } int main() { long long a,b,h; double zhishu1,zhishu2; ios::sync_with_stdio(false);//取消同步 while(cin>>a>>b) { zhishu1=b*1.0*log10(a); zhishu2=zhishu1-floor(zhishu1);//floor取整运算 h=pow(10.0,zhishu2)*100; cout<