奇怪的分组(stone)
来源:互联网 发布:人力vocaloid软件 编辑:程序博客网 时间:2024/06/03 17:36
背景描述:
终于解出了dm同学的难题,dm同学同意帮v神联络。可dm同学有个习惯,就是联络同学的时候喜欢分组联络,而且分组的方式也很特别,要求第i组的的人数必须大于他指定的个数ci。在dm同学联络的时候,v神在想,按照dm同学的规则一共可以有多少种方案呢?他想啊想,终于……没想出来。于是他又想到了聪明的你,你能帮v神算出按照dm同学的规则有多少种分组方案吗?
题目描述:
v神的班级共有n个人,dm同学想把同学分成M组联络,要求第i组的人数必须大于给定的正整数Ci,求有多少不同的方案?(两个是相同的方案当且仅当对于任意的一队i,两个方案的第i组同学数量相等)由于结果很大,所以你只需要输出模1000000007的值。
输入格式:
第一行两个整数N和M ,后面有M行,每行一个整数,表示Ci
输出格式:
仅有一行,一个整数,方案数模1000000007的值。
样例输入:
10 3
1
2
3
样例输出:
3
样例解释:
方案有三种,每堆的个数分别是(3,3,4),(2,4,4),(2,3,5)。
数据范围约定:
对于30%的数据,N ,M<= 10
对于60%的数据,N ,M<=1000
对于100%的数据,N ,M<= 1000000 Ci<=1000
数据保证至少有一个方案
由组合的知识得答案是C(N-sigma(ci)-1,m-1),然后大数据不知道怎么搞,用前辈的模板可以A,数论知识还是太弱了,慢慢研究
前辈的模板qingyezhu
#include<iostream>#include<cstring>#define LL long long#define N 1000010using namespace std;const long long r=1000000007;int x, y;long long n,m;void extend_gcd(int a, int b) { int xx; if (b == 0) { x = 1, y = 0; return; } extend_gcd(b, a % b); xx = x; x = y, y = xx - a / b * y;}int C(int a, int b, int p) { int i; LL resa, resb, res; if (b > a) { return 0; } for (i = 0, resa = 1, resb = 1; i < b; i++) { resa = resa * (a - i) % p, resb = resb * (b - i) % p; } extend_gcd(resb, p); res = (LL) x; res = (res % p + p) % p; res = res * resa % p; return (int) res;}void solve(int n, int m, int p) { int a, b; LL res; res = 1; while (n || m) { a = n % p, b = m % p; res = res * C(a, b, p) % p; n /= p, m /= p; } printf("%I64d\n", res);}int main(){freopen("stone.in","r",stdin);freopen("stone.out","w",stdout);long long t,ans=0;scanf("%I64d%I64d",&n,&m);for (int i=0;i<m;++i) {scanf("%I64d",&t);n-=t;}n-=1,m-=1;solve(n,m,r);return 0;}
0 0
- 奇怪的分组(stone)
- 奇怪的分组 组合数
- 洛谷 1680 奇怪的分组
- Stone的txl数
- Stone的高数
- Stone的txl数
- stone
- Stone
- stone
- stone 的 log4j配置详解
- Rosetta Stone的#1141错误
- 题解--Stone的txl数
- 扔石头的问题Stone
- 写给stone的项目建议_20041013
- Stone的Java学习笔记1
- 变参函数的实现(stone-csdn)
- Rosetta Stone 3:2123的排错
- Lifting the Stone(hdu1115)多边形的重心
- 详解YUV420数据格式 (YUV420sp和YUV420p)
- 【教程】BeautifulSoup中使用正则表达式去搜索多种可能的关键字
- mongodb的安装和简单命令
- web.py 十分钟创建简易博客
- 欢迎使用CSDN-markdown编辑器
- 奇怪的分组(stone)
- C++学习笔记 extern C
- 范数、奇异值
- JavaScript全局变量与局部变量实验
- 为什么选择Android Studio 而不再固守 Eclipse?
- 【转播公告】
- Mongo库表操作命令
- 64 鸡兔同笼
- MongoDB安装和简介