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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 智慧小区智能物业管理系统综合解决方案_智能小区管理系统

    智慧小区智能物业管理系统综合解决方案_智能小区管理系统因为传统的办公方式效率低,工作强度大。人们需耗费大量的时间和精力去手工处理那些繁杂、重复的工作,而手工处理的延时和差错,正是现代化管理中应该去除的弊端。又由于物业管理企业的启动基金不足,多种经营服务不善等,导致招不到专业水平高的工作人员,再加上管理手段落后,所以就很难提高物业管理企业的效益。小区管理在手工操作时代,工作非常繁琐,需要大量的人力、物力和财力,极大的浪费了小区物业的资源。而这些项目在过去手工操作时代,需要手工记录这些事情,不但麻烦琐碎,还经常出现错误,给广大业主带来很不便,正是适应这种社…

    2022年10月18日
    4
  • angular路由懒加载强制刷新_angular路由

    angular路由懒加载强制刷新_angular路由version7.x{path:’test’,loadChildren:’./test/test_ui.module#TestUIModules’},version8.x{path:’test’,loadChildren:()=>import(‘./test_ui/test_ui.module’).then(mod=>mod.TestUIModules)},

    2022年10月7日
    4
  • scrapy下载图片报[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:错误[通俗易懂]

    scrapy下载图片报[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:错误[通俗易懂]本文转自:http://blog.csdn.net/zzk1995/article/details/51628205先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbiddenbyrobots.txt,看来是请求被拒绝了。…

    2022年6月12日
    28
  • 钓鱼邮件案例_钓鱼诈骗案例

    钓鱼邮件案例_钓鱼诈骗案例防网络诈骗分析

    2022年8月24日
    10
  • stringtokenizer是什么意思_keyfactory.getinstance

    stringtokenizer是什么意思_keyfactory.getinstanceStringTokenizer可以将一个字符串分解为一个一个的单词或者标记。常用方法如下:methodcontentintcountTokens()返回nextToken方法被调用的次数。booleanhasMoreTokens()返回是否还有分隔符。booleanhasMoreElements()返回是否还有分隔符。StringnextTo…

    2022年8月11日
    4
  • 设置下一跳(ensp配置实例大全)

    下一跳:首先要知道出口,也就是路由器的发出口。连接线有两个端点,其中一个就是路由器的发出口,另一端就是下一跳。对于其中一个路由器来说,它要发送到其他网段,那么目标地址就是要发送的网段的网络地址,出接口就是路由器的出口,下一跳就是路由器出口相连的那根线的另一端(这个路由器只能做这么多,其余的交给下一个路由器)…

    2022年4月15日
    85

发表回复

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

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