HDU5187 zhx's contest(计数问题)
来源:互联网 发布:燕十八php教程垃圾 编辑:程序博客网 时间:2024/06/05 06:25
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5187
题意:
从1~n,有多少种排列
使得 a1~ai 满足单调递增或者单调递减。
ai~an 满足单调递增或者递减。
很明显的组合问题
从n个数种选出i个数 剩下的数要满足单调递增或者递减或者递减的规律那么方式唯一
ans = (C(N,0)+C(N,1)+......+C(N,N)) =2^N;
但是这种情况下 单调递增和单调递减算了两遍 因此要减2
ans = 2^n - 2;
注意n = 1的情况 ,由于n比较大 ,要注意乘法溢出的情况
代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;typedef long long LL;LL multi(LL a,LL b, LL c){ LL ans = 0; while(b){ if(b&1){ ans= (ans+a)%c; b--; } b>>=1; a=(a+a)%c; } return ans;}LL quick_mod(LL a,LL b,LL c){ LL ans = 1; while(b){ if(b&1){ ans = multi(ans,a,c); b--; } b>>=1; a=multi(a,a,c); } return ans ;}int main(){ LL n,p; while(~scanf("%lld%lld",&n,&p)){ if(n==1){ printf("%d\n",1%p); continue; } LL ans = 2; ans = quick_mod(ans,n,p); ans =(ans - 2 + p)%p; printf("%I64d\n",ans); } return 0;}
0 0
- HDU5187 zhx's contest(计数问题)
- 数学(快速幂+快速加法 hdu5187-zhx's contest)
- hdu5187 zhx's contest题解(快速幂快速积)
- [练习][HDU5187]快速幂加强(快速幂+快速乘) zhx's contest
- zhx's contest
- zhx's contest HDU
- HDU 5187 zhx's contest
- HDU - 5187 zhx's contest
- hdu 5187-zhx's contest
- HDU - 5187 - zhx's contest
- HDOJ 5178 zhx's contest
- hdu 5187 zhx's contest ( 数学+java)
- BestCoder Round #33 1002 zhx's contest
- HDU 5187 zhx's contest(快速乘法)
- Hdu 5187 zhx's contest(数学)
- zhx's contest----快速幂+快速乘
- hdu 5186 zhx's submissions 5187 zhx's contest快速幂小优化
- HDU 5187 zhx's contest(防爆__int64 )
- DOM4J解析xml
- JSP默认选中下拉框的某一项
- UVA - 10163 Storage Keepers
- 找球号(三)
- 数字sring 提取单个数字
- HDU5187 zhx's contest(计数问题)
- MongoDB服务的启动
- Python脚本运行问题
- 缺少mfc100u.dll xxx100d.dll等的解决方法
- 【排序算法】快速排序
- LINUX下ping命令学习笔记
- android https HttpsURLConnection 忽略证书
- hdu 4193 单调队列
- DOM解析xml