版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Analysis
绝对是题目描述的问题
注意:
在这道题中
和
是两种不同的方案
但
和
只能算一种
所以不算球盒问题那八类中的任何一类
直接插板法思考即可
将n看作n个1,那么有n-1个板子,每个板子都有选和不选两种方法
由于N很大而P又是质数
用费马小定理降幂即可
(mod p)
Code
#include<bits/stdc++.h>
#define re register
using namespace std;
typedef long long ll;
char st[100009];
const int P=1e9+7;
inline ll ksm(ll x,ll b){
ll res=1;
while(b){
if(b&1) res=res*x%P;
x=x*x%P;
b>>=1;
}
return res;
}
int main(){
while((scanf("%s",st))!=EOF){
int len=strlen(st);
ll idx=0;
for(re int i=0;i<len;++i)
idx=(idx*10+st[i]-'0')%(P-1);
idx=((idx-1)%(P-1)+(P-1))%(P-1);
printf("%lld\n",ksm(2,idx));
}
return 0;
}