题目分析
如果n=1,答案是1,否则答案是2n−2。
证明:ai肯定是最小的或者最大的。考虑另外的数,如果它们的位置定了的话,那么整个序列是唯一的。
那么ai是最小或者最大分别有2n−1种情况,而整个序列单调增或者单调减的情况被算了2次,所以要减2。
要注意的一点是因为p>231,所以要用快速乘法。用法与快速幂相同。如果直接乘会超过long long范围,从而wa掉。 快速幂+快速乘法

#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;
typedef long long ll;

ll quickmul(ll x,ll m,ll p) //快速乘法,与快速幂相似
{
ll re=0;
while(m)
{
if(m&1)
{
re=(re+x)%p;
}
x=(x+x)%p;
m>>=1;
}
return re;
}
ll PowerMod(ll x, ll n, ll p)
{
if (n ==0)
{
return 1;
}
ll temp = PowerMod(quickmul(x , x,p), n/2, p); //递归计算(X*X)^[N/2]
if ((n &1) !=0) //判断n的奇偶性
{
temp = quickmul(temp , x, p);
}
return temp;
}
int main()
{
ll n,p;
while(scanf("%I64d %I64d",&n,&p)!=EOF)
{
if(n==1)
{
if (p==1) printf("0\n");
else printf("1\n");
}
else
printf("%I64d\n", (PowerMod(2,n,p)+p-2)%p);
}
return 0;
}

吐槽一下,在ubuntu的codeblocks中,n,p定义为全局变量,结果正确,定义在main中,结果不对,为此浪费了好多时间,欢迎大神指教!!!

												

hdu 5187 zhx's contest的更多相关文章

  1. hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]

    传送门 zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. hdu 5187 zhx's contest (快速幂+快速乘)

    zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  3. HDU 5187 zhx's contest 快速幂,快速加

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5187 bc(中文): http://bestcoder.hdu.edu.cn/contes ...

  4. HDU - 5187 zhx's contest(快速幂+快速乘法)

    作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足. 1:a1. ...

  5. HDU - 5187 - zhx&#39;s contest (高速幂+高速乘)

    zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  6. hdu 5188 zhx and contest [ 排序 + 背包 ]

    传送门 zhx and contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  7. HDU 5187 zhx&#39;s contest(防爆__int64 )

    Problem Description As one of the most powerful brushes, zhx is required to give his juniors n probl ...

  8. HDU 5188 zhx and contest(带限制条件的 01背包)

    Problem Description As one of the most powerful brushes in the world, zhx usually takes part in all ...

  9. hdu 5187 高速幂高速乘法

    http://acm.hdu.edu.cn/showproblem.php?pid=5187 Problem Description As one of the most powerful brush ...

随机推荐

  1. [转载]Android View.onMeasure方法的理解

    2013-12-18 10:56:28 转载自http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html View在屏幕上显示出来要先经过measure( ...

  2. Hibernate对象映射类型

    Hibernate understands both the Java and JDBC representations of application data. The ability to rea ...

  3. raspbian 静态IP

    edit file:  /etc/network/interfaces change line: iface eth0 inet dhcp iface eth0 inet static address ...

  4. Altium Designer 2013 13 复制出错的问题

    刚换成Altium Designer 2013 13,谁知先碰了钉子,为了赶进度需要复制以前的一个原理图上的部分电路图,一复制尽然报错不能复制,通过百度和向高人求助,总结一下两种方法: 1.在电脑上虚 ...

  5. Ubuntu 13.04设置root用户

    1 .设置root用户密码:passwd root 输入密码 2 .编辑lightdm.conf gedit /etc/lightdm/lightdm.conf 最后加: greeter-show-m ...

  6. android 定时器的使用

    1.android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的.具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系 ...

  7. poj1141 区间dp+路径

    //Accepted 176 KB 47 ms //感谢大神们为我们这群渣渣铺平前进的道路!! //用scanf("%s",s)!=EOF WA到死 #include <cs ...

  8. oracle 删除表和数据分析语句

    TRUNCATE TABLE 表名;ANALYZE TABLE 表名 ESTIMATE STATISTICS;

  9. 使用 VisualVM 进行性能分析及调优

    VisualVM 是一款免费的性能分析工具.它通过 jvmstat.JMX.SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态 ...

  10. paramiko堡垒机、线程及锁

    1.使用paramiko实现ssh连接和scp拷贝 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 1.1 SSHClient 用于连接远 ...