HDU 4704 Sum(费马小定理)
实际上求2^(n-1)%mod
即用费马小定理:a^b%c=a^(b%(c-1))%c
写之前没有读懂题意,以为1+2+1与1+1+2是一种,而且该题s1,s2是规定为1的不是计算而得的
#include <iostream> #include <cstdio> #include <cstring> #define ll long long using namespace std; const int mod=1000000007; const int maxn=1e5+10; char str[maxn]; ll quick_mod(ll a,ll b,ll c) { ll res,t; res=1; t=a%c; while(b) { if(b&1){ res=res*t%c; } t=t*t%c; b>>=1; } return res; } int main() { ios::sync_with_stdio(false);cin.tie(0); while(cin>>str) { int len=strlen(str); ll ans=0; for(int i=0;i<len;i++) { ans=(ans*10+str[i]-'0')%(mod-1); } ans=(ans-1+mod-1)%(mod-1); cout<<quick_mod(2,ans,mod)<<endl; } return 0; }