呵呵呵
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;
}
单峰数列。规律是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;
}
相关文章推荐
- 今天到微软开源网站注册了,呵呵
- xhinker把百度和google兼并了(呵呵发了)
- CSDN的荣誉分到了666,呵呵
- 呵呵大家好,新建立NET群 31815967 欢迎大家加入交流
- 呵呵,谢谢朋友们的关心
- 广西南宁原创歌曲 顶个西大学生个L~~呵呵
- 呵呵,不错,CSDN 博客换页面了呀,昨天还没换呢哦。
- 两个月没有写随笔了,感谢大家的关照!冒出来跟大家,表明我还活着.呵呵!!
- 呵呵 以后用linux
- 呵呵.今天刚开通我的博客
- 呵呵,我又回来了
- 自己切割的一个页面。呵呵。
- 煤气来了,呵呵,一个人的日子
- 说一个隐蔽克隆帐号的方法 庆祝国庆 庆祝17BIG! 呵呵
- 还有公司解决住房问题,呵呵
- 摩根斯坦利——班上一下出了俩,呵呵
- 偶的blog百篇原创留念-呵呵
- 所有形式的函数声明你都能认出来吗?不一定吧,呵呵
- 四级过了,呵呵...
- [linux入门系列]不转了。到ibm developerworks上看去把。呵呵