give gandies(数学题)

2019-04-14 15:48发布

传送门:https://nanti.jisuanke.com/t/31716 题意:求2的n次方(10^1000000)mod 1e9+7 思路:利用费马小定理,a^(p-1)=1(mod p),然后求出次方模1e9+6的结果。求次方模1e9+6的方法是还原过程中每次mod 1e9+6 #include using namespace std; long long pow(long long a,long long b,long long mod) { long long ans=1; while(b>0) { if(b&1) ans=ans*a%mod; a=a*a%mod; b/=2; } return ans; } inline char inputchar() { return getchar(); } int p[10000000]; int main() { int num; scanf("%d",&num); while(num--) { char ch = inputchar(); int cnt=0; memset(p,0,sizeof(p)); while(ch < '0' || ch > '9') ch = inputchar(); while(ch >= '0' && ch <= '9') { p[++cnt]=ch-'0'; ch=inputchar(); } long long now=0; for(int i=1;i<=cnt;i++) { now*=10; now+=p[i]; now%=1000000006; } int ans=pow(2,--now,1000000007); printf("%d ",ans); } return 0; }