bzoj 4338[BJOI2015] 糖果 - 组合
4338: BJOI2015 糖果
Time Limit: 2 Sec Memory Limit: 256 MB
Description
Input
Output
Sample Input
1 3 3 10
【样例输入2】
2 2 2 10
Sample Output
0
【样例输出2】
6
HINT
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #define LL long long 6 7 using namespace std; 8 9 int N, M, K, P; 10 11 const int MAXM = 1e5 + 10; 12 13 int cnt = 0; 14 int prime[MAXM]; 15 LL val[MAXM]; 16 int num[MAXM]; 17 int f[MAXM]; 18 19 inline LL read() 20 { 21 LL x = 0, w = 1; char ch = 0; 22 while(ch < '0' || ch > '9') { 23 if(ch == '-') { 24 w = -1; 25 } 26 ch = getchar(); 27 } 28 while(ch >= '0' && ch <= '9') { 29 x = x * 10 + ch - '0'; 30 ch = getchar(); 31 } 32 return x * w; 33 } 34 35 void init() 36 { 37 for(int i = 2; i < MAXM; i++) { 38 if(!f[i]) { 39 f[i] = i; 40 prime[++cnt] = i; 41 } 42 for(int j = 1; j <= cnt && i * prime[j] < MAXM; j++) { 43 f[i * prime[j]] = prime[j]; 44 if(i % prime[j] == 0) { 45 break; 46 } 47 } 48 } 49 /*for(int i = 0; i <= 2000; i++) { 50 c[i][0] = 1; 51 for(int j = 1; j <= i; j++) { 52 c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % P; 53 } 54 }*/ 55 } 56 57 int main() 58 { 59 N = read(), M = read(), K = read(), P = read(); 60 init(); 61 for(int j = 0; j < M; j++) { 62 val[j] = K + j; 63 } 64 for(int j = M; j > 1; j--) { 65 int t = j; 66 while(t > 1) { 67 num[f[t]]++; 68 t = t / f[t]; 69 } 70 } 71 int st = K; 72 for(int i = 1; i <= cnt; i++) { 73 for(int j = ((st - 1) / prime[i] + 1) * prime[i]; j < K + M; j += prime[i]) { 74 int t = j - st; 75 //cout<<prime[i]<<" "<<j<<" "<<val[t]<<" "<<num[prime[i]]<<endl; 76 while(val[t] % prime[i] == 0 && num[prime[i]]) { 77 val[t] /= prime[i]; 78 num[prime[i]]--; 79 } 80 if(num[prime[i]] == 0) { 81 break; 82 } 83 } 84 } 85 LL ans = 1; 86 for(int i = 0; i < M; i++) { 87 ans = ans * val[i] % P; 88 } 89 //cout<<ans<<" "<<c[M + K - 1][K - 1] % P<<endl; 90 LL now = ans; 91 for(int i = 1; i < N; i++) { 92 ans = ans * (now - i) % P; 93 } 94 printf("%lld\n", ans); 95 return 0; 96 } 97 98 /* 99 100 100 10 5 1000000000 101 102 103 */
View Code
转载于:https://www.cnblogs.com/wuenze/p/8598153.html
bzoj 4338[BJOI2015] 糖果 - 组合相关推荐
- bzoj 4338: BJOI2015 糖果
4338: BJOI2015 糖果 Time Limit: 2 Sec Memory Limit: 256 MB Submit: 200 Solved: 93 [Submit][Status][D ...
- BZOJ 4338 BJOI2015 糖果
此题其实没什么营养就提示了 , 简单推一个公式 , 再上中国剩余定理即可. PnCmm+k−1 P_{C_{m+k-1}^{m}}^{\,n} 其中p<script type="mat ...
- 4338: BJOI2015 糖果
4338: BJOI2015 糖果 Time Limit: 2 Sec Memory Limit: 256 MB Submit: 141 Solved: 66 [Submit][Status][D ...
- BZOJ 4338 糖果(扩展Lucas定理+CRT)
题目链接:BZOJ 4338 题目大意:用数字1~k填一个n*m的表格,每种数字可用任意次,要求每行数字1~m列单调不减,任意两行不完全相同,求方案数对P取模的值. 题解:扩展Lucas+CRT模板题 ...
- bzoj 2330: [SCOI2011]糖果
2330: [SCOI2011]糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- BZOJ 1045 [HAOI2008]糖果传递 ★(环形等分:中位数)
题意 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. 思路 假设平均数是x,且a1给an了k个(k<0说明是an给a1了-k个),那么总代价就 ...
- BZOJ.3052.[WC2013]糖果公园(树上莫队 带修改莫队)
题目链接 BZOJ 当然哪都能交(都比在BZOJ交好),比如UOJ #58 //67376kb 27280ms //树上莫队+带修改莫队 模板题 #include <cmath> #inc ...
- 无根树的同构:Hash最小表示法(bzoj 4337: BJOI2015 树的同构)
这里的同构是指: 对于两棵树A, B,如果能通过重新标号使得两棵树完全相同,则称树A和B同构 Hash最小表示法步骤: ①暴力每个节点为根 ②对于当前根x,对树进行DFS ③DFS时对每个节点维护一个 ...
- SPFA差分约束(bzoj 2330: [SCOI2011]糖果)
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 6355 Solved: 2096 [Submit][Stat ...
最新文章
- Distilling the Knowledge in a Neural Network 论文笔记蒸馏
- iOS 支付 [支付宝、银联、微信]
- NAPI模式--中断和轮询的折中以及一个负载均衡的问题
- c语言奇数阶换房,(完整版)C语言酒店管理系统.docx
- 硒品牌谋定功能性农业-农业大健康·万祥军:践行健康中国
- 从no-code到low-code:企业级hpaPaaS的未来
- gradle构建多模块项目_Gradle入门:创建多项目构建
- 工作283:抽离出新页面优化
- 使用 IntraWeb (41) - 数据控件速查
- react周期函数介绍
- 实验:DHCP中继代理
- 怎么看台式计算机是几位的,电脑多少位在哪里看_如何看电脑系统是多少位-win7之家...
- 中国大陆加港澳台手机正则验证
- linux 串口转网口工具,linux下串口调试工具/串口终端推荐: picocom(转)
- 使用谷歌、360浏览器的F12功能模拟微信访问网页
- DNS服务解析与原理笔记
- 剑指offter Java单链表反转
- Excel技能树系列01:电子表格发展史
- unity 标准资源包中的围绕旋转摄像机
- 多传感器融合论文已读