您的位置:首页 > 其它

呵呵呵

2017-03-17 22:06 106 查看
想知道为什么过不了后面的点……恼火

单峰数列。规律是2^n-2。

#include<cstdio>
#include<algorithm>
#include<cstring>
long long a[12]={0,1,2,6,14,30,62,126,254,510,1022};
using namespace std;
long long tot,n,p;
long long mpow( long long b )
{
long long rt=1;
long long a=2;
for(rt;b;b>>=1,a=((a%p)*(a%p))%p)
if(b&1) rt=((rt%p)*(a%p))%p;
return rt;
}
int main()
{
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
while(scanf("%I64d%I64d",&n,&p)!=EOF)
{
if(p==1) printf("0\n");
else {
if(n<=10)printf("%I64d\n",a
%p);
else{
long long tot=mpow(n);
printf("%I64d\n",((tot-2)%p+p)%p);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: