018 ACM/ICPC 焦作賽區網路賽
阿新 • • 發佈:2018-12-10
G :
我推出來的公式是 n^0+(n-1)^1+(n-2)^2 +........+1^(n-1)
這樣的結果是對的,然而不知道怎麼化簡成 2^(n-1)形式.....
然後就是用費馬小定理來縮小n了
大數取模的時候要取模mod-1!老是忘記...
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include <functional> using namespace std; typedef long long int LL; // freopen("E:/input/ceshi.txt", "r", stdin); #define mes(a,b) meset(a,b,sizeof(a)) #define rep(i,l,r) for(int i=l;i<=r;++i) #define per(i,r,l) for(int i=r;i>=l;--i) #define lowbit(x) x&(-x) const int maxn = 1e6+300; const int mod = 1000000007; const int INF = 0x3f3f3f3f; LL qumod(LL a,LL b) { LL c=1; while(b){ if(b&1) { c=(c*a)%mod; } a=a*a%mod; b>>=1; } return c; } int main() { int t; char a[100006]; cin>>t; while(t--) { LL ans=0; cin>>a; int len=strlen(a); for(int i=0;a[i];i++) { ans=(ans*10+(a[i]-'0'))%(mod-1); } cout<<(qumod(2,ans-1))%mod<<endl; } return 0; }