题意比较好懂,可以用隔板法来理解,十进制快速幂也不算很难
#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL mod=1e9+7; LL qpow(LL x,LL n) //求x^n%mod { LL ret=1; for(; n; n>>=1) { if(n&1) ret=ret*x%mod; x=x*x%mod; } return ret; } LL inv(LL x) { return qpow(x,mod-2); } string n; int main() { while(cin>>n) { LL ans=1,a=2; for(int i=n.length()-1;i>=0;i--) { ans=ans*qpow(a,n[i]-'0')%mod; a=qpow(a,10); } ans=ans*inv(2)%mod; cout<<ans<<endl; } }