题目分析
如果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. Windows内核对象

    1. 内核对象 Windows中每个内核对象都只是一个内存块,它由操作系统内核分配,并只能由操作系统内核进行访问,应用程序不能在内存中定位这些数据结构并直接更改其内容.这个内存块是一个数据结构,其成员 ...

  2. MySQL为数据表的指定字段插入数据

    username not null 没有默认值/有默认值   insert不插入username字段 均不报错 2014年07月23日21:05    百科369 MySQL为数据表的指定字段插入数据 ...

  3. c++ 普通高精减

    //c++ 普通高精减 //codevs 3115 高精度练习之减法 //内容简单,就不注释了. //注意下,&&优先级高于||. #include<cstdio>#inc ...

  4. HDU 4046 Panda

    线段树单点更新,要注意两段合并多出的答案的计算即可 //======================================================================== ...

  5. 常州培训 day7 解题报告

    最后一天..有些感慨,这七天被虐的感动万分 第一题: 题目大意: 求出 n*i(i=1,2,3....n) mod p的逆元  n<p<=3000000 ,p是质数. 之前写过了,懒得再写 ...

  6. Java与.NET DES加密解密互转

    上代码: Java代码: import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKe ...

  7. ODI中web service介绍

    ODI WS架构

  8. objective-c strong导致内存泄漏简单案例

    例如: @interface Test:NSObject{ id __strong obj_; } -(void) setObject:(id __strong)obj; @end @implemen ...

  9. SQL SERVER中的逻辑读取,物理读取,以及预读的理解

    在SQLSERVER查询分析器中,当我们用Set Statistics on 语句来统计SQL语句或者存储过程I/O的时候, SQLSERVER会显示几个概念去词语:逻辑读取,物理读取,预读. 如下: ...

  10. ld can't link with a main executable file for architecture armv7

    在iPhone 6 Plus上跑的时候遇到了这么一个错误:ld can't link with a main executable file for architecture armv7,然后就各种改 ...