题目
解题思路
不会证明,找规律。。。
发现答案是(2^(n-1))mod(1e9+7)
由于n很大,1e9+7是个质数
由费马小定理 2^(1e9+6)≡1(mod (1e9+7))
所以答案是(2^((n-1) mod (1e9+6)))mod(1e9+7)
代码
#include <cstdio>
#include <iostream>
using namespace std;
const int MOD=1e9+7;
const int p=1e9+6;
long long MI(long long a,long long b)
{
long long base=a;
long long t=1;
while (b)
{
if (b&1) t=(t*base)%MOD;
base=(base*base)%MOD;
b>>=1;
}
return t;
}
int main()
{
char x='A';
while (true)
{
if (x==EOF) break;
long long num=0;
bool sym=false;
while (true)
{
x=getchar();
if (x==EOF || x=='\n') break;
if (!(x>='0' && x<='9')) continue;
sym=true;
num=num*10+x-48;
num%=p;
}
if (!sym) break;
num=(num-1+p)%p;
long long ans=MI(2,num);
cout<<ans<<endl;
}
}