题目链接:点击打开链接
题意:求2的(n-1)次幂模1000000007。n<10^100000。
思路:根据费马小定理 (a^p)%p=a可得(a^n)%p={a^(n)%(p-1)}%p;then so easy!
cpp:点击打开链接
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;
#define MOD 1000000006
#define mod 1000000007
int moded_number(string data)
{
int l=data.length();
long long ret=0;
for(int i=0;i<l;i++)
{
ret=(ret*10+data[i]-'0')%MOD;
}
return ret;
}
int power_mod(int n)
{
long long ret=1;
long long tp=2;
while (n)
{
if(n&1)
{
ret*=tp;
ret=ret%mod;
}
tp=(tp*tp)%mod;
n/=2;
}
return ret;
}
int main ()
{
string data;
//freopen("data.in","r",stdin);
while (cin>>data)
{
int n=moded_number(data);
n=(n-1+MOD)%MOD;
int ans=power_mod(n);
printf("%d\n",ans);
}
return 0;
}