十进制快速幂
Posted lengsong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十进制快速幂相关的知识,希望对你有一定的参考价值。
给你一个大数n,求2的n次幂;
由于n很大,用普通的快速幂已经不能够很快的算出了,因为不好判断奇偶以及除2这些,不过不过用十进制快速幂求普通的ll及int型数也很快;
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e4+5; int mod=1e9+7; ll qpow(ll a,ll b) if(b==0) return 1; ll ans=1; while(b) if(b&1) ans=(ans*a)%mod; a=a*a%mod; b>>=1; return ans%mod; int main() char arr[maxn]; ll bit[20]; bit[0]=1; for(int i=1; i<10; i++) bit[i]=bit[i-1]*2; scanf("%s",arr); int len=strlen(arr); ll ans=1; for(int i=0; i<len; i++) ans=qpow(ans,10)%mod; ans=ans*bit[arr[i]-‘0‘]%mod; printf("%lld\n",(ans+mod)%mod); return 0;
以上是关于十进制快速幂的主要内容,如果未能解决你的问题,请参考以下文章