hdu 5187 高速幂高速乘法

hdu 5187 高速幂高速乘法

大家好,又见面了,我是全栈君。

http://acm.hdu.edu.cn/showproblem.php?pid=5187

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



n
 problems.

zhx thinks the 



ith
 problem’s difficulty is 



i
. He wants to arrange these problems in a beautiful way.

zhx defines a sequence 



{ai}
 beautiful if there is an 



i
 that matches two rules below:

1: 



a1..ai
 are monotone decreasing or monotone increasing.

2: 



ai..an
 are monotone decreasing or monotone increasing.

He wants you to tell him that how many permutations of problems are there if the sequence of the problems’ difficulty is beautiful.

zhx knows that the answer may be very huge, and you only need to tell him the answer module 



p
.
 


Input
Multiply test cases(less than 



1000
). Seek 



EOF
 as the end of the file.

For each case, there are two integers 



n
 and 



p
 separated by a space in a line. (



1n,p1018
)
 


Output
For each test case, output a single line indicating the answer.

 


Sample Input
   
   
2 233 3 5

 


Sample Output
   
   
2 1
Hint
In the first case, both sequence {1, 2} and {2, 1} are legal. In the second case, sequence {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1} are legal, so the answer is 6 mod 5 = 1

/**
hdu 5187  高速幂高速乘法
题目大意:(转)数字1~n,按某种顺序排列。且满足下列某一个条件:(1)a1~ai递增,ai~an递减(2)a1~ai递减,ai~an递增。
      问有多少种不同的排列。
解题思路:首先是所有递减或所有递增各一种;另外就是满足上列两个条件的情况了。要想满足条件(1)那就仅仅能把最大的n放在i位置,
       共同拥有C(1,n-1)+C(2。n-1)+。。。

+C(n-2,n-1)即2^(n-1)-2;条件(2)与(1)同样,所以共同拥有(2^(n-1)-2)*2+2=2^n-2.**/#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>using namespace std;typedef long long LL;LL n,p;LL qui_mul(LL x,LL m)///高速乘法{ LL re=0; while(m) { if(m&1) { re=(re+x)%p; } x=(x+x)%p; m>>=1; } return re;}LL qui_pow(LL a,LL n)///高速幂{ LL ret=1; LL tem=a%p; while(n) { if(n%1)ret=qui_mul(ret,temp)%p; temp=qui_mul(temp,temp)%p; n>>=1; } return ret;}int main(){ while(~scanf("%I64d%I64d",&n,&p)) { if(n==1) { if(p==1) printf("0\n"); else printf("1\n"); } printf("%I64d\n",(qui_mul(2,n)-2)%p); } return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116588.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 人生哲理「建议收藏」

    人生哲理「建议收藏」九大人生哲理 1、跌倒了,才懂得平顺最重要;2、病倒了,才懂得身体最重要;3、郁闷了,才懂得快乐最重要;4、挫折了,才懂得信心最重要;5、错过了,才懂得珍惜最重要;6、潦倒了,才懂得金钱最重要;7、丢人了,才懂得名誉最重要;8、成功了,才懂得过程最重要;9、迟暮了,才懂得时间最重要。 生命的要义 人生要做两件事:一件感恩,一件感悟;人生要迈两

    2022年6月2日
    59
  • 如何制作rootfs_linux常用文件系统类型

    如何制作rootfs_linux常用文件系统类型rootfs文件系统制作笔记环境:XC2440linux2.32.2红帽5根文件系统有一系列的目录组成,其中包括应用程序、C库、及相关的配置文件。制作根文件系统的步骤如下,下面步骤均在虚拟机终端上操作。一、创建文件系统总目录rootfs【mkdirrootfs】二、创建文件系统目录【cdrootfs】进入rootfs目录,创建下面目录/bin–放置…

    2022年10月7日
    3
  • SQL注入之联合查询注入

    SQL注入之联合查询注入联合查询注入利用的前提前提条件:页面上有显示位什么是显示位?在一个在一个网站的正常页面,服务端执行SQL语句查询数据库中的数据,客户端将数据展示在页面中,这个展示数据的位置就叫显示位联合注入的过程1、判断注入点2、判断是整型还是字符型3、判断查询列数4、判断显示位5、获取所有数据库名6、获取数据库(test)所有表名7、获取(数据库:test,表:admin)中所有字段名8、获取字段中的数据一、…

    2022年5月20日
    48
  • QThread介绍

    QThread介绍在程序设计中,为了不影响主程序的执行,常常把耗时操作放到一个单独的线程中执行。Qt对多线程操作有着完整的支持,Qt中通过继承QThread并重写run()方法的方式实现多线程代码的编写。针对线程之间的同步与互斥问题,Qt还提供了QMutex、QReadWriteLock、QwaitCondition、QSemaphore等多个类来实现。本篇博客将针对以下几个方面进行讲解[1]QThread的常用接口以及QThread的实现[2]QThread的信号事件[3]QThread执行完后自动释放内存

    2022年5月28日
    119
  • nonzero函数_python 类方法

    nonzero函数_python 类方法类的nonzero方法用于将类转换为布尔值。通常在用类进行判断和将类转换成布尔值时调用。比如语句ifA:print'foo'中就会调用A.nonzero()来判断。下面这个程序应

    2022年8月6日
    8
  • phpstorm 激活_在线激活

    (phpstorm 激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    109

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号