传送门:
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;
}