博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3037 Saving Beans(组合数学)
阅读量:6565 次
发布时间:2019-06-24

本文共 1081 字,大约阅读时间需要 3 分钟。

题目大意:n个数,和不大于m的情况,结果模掉p,p保证为素数。

解题思路:隔板法,C(nn+m)多选的一块保证了n个数的和小于等于m。可是n,m非常大,所以用到。

#include 
#include
#include
using namespace std;typedef long long ll;ll n, m, p;ll qPow (ll a, ll k) { ll ans = 1; while (k) { if (k&1) ans = (ans * a) % p; a = (a * a) % p; k /= 2; } return ans;}/*long long qPow(long long a, long long k) { if (k == 0) return 1; if (k == 1) return a; long long ans = qPow(a * a % p, k>>1); if (k&1) ans = ans * a % p; return ans; } */ll C (ll a, ll b) { if (a < b) return 0; if (b > a - b) b = a - b; ll up = 1, down = 1; for (ll i = 0; i < b; i++) { up = up * (a-i) % p; down = down * (i+1) % p; } return up * qPow(down, p-2) % p;}ll lucas (ll a, ll b, ll p) { if (b == 0) return 1; return C(a%p, b%p) * lucas(a/p, b/p, p) % p;}int main () { int cas; scanf("%d", &cas); while (cas--) { scanf("%lld%lld%lld", &n, &m, &p); printf("%lld\n", lucas(n+m, m, p)); } return 0;}

转载地址:http://djdjo.baihongyu.com/

你可能感兴趣的文章
Python 转义符
查看>>
海茶3 らぶデス3 入门经典教程
查看>>
pstree命令
查看>>
css选择器顺序的小技巧
查看>>
C#之自己定义的implicit和explicit转换
查看>>
dojo 学习笔记之dojo.query - query(id) 与query(class)的差别
查看>>
Java基础加强总结(三)——代理(Proxy)
查看>>
一步一步写算法(之hash表)
查看>>
C99规范
查看>>
常用Git代码托管服务分享
查看>>
[转] 电子技术·笔记1(9月份)
查看>>
常用的服务
查看>>
BZOJ3799 : 字符串重组
查看>>
用纯JS做俄罗斯方块 - 简要思路介绍(1)
查看>>
blog摘录--测试感触
查看>>
数据持久化的复习
查看>>
【DeepLearning】Exercise:Sparse Autoencoder
查看>>
Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)
查看>>
android 设置布局横屏竖屏
查看>>
ThreadLocal
查看>>