NYOJ 158 省赛来了(变相组合数)
省赛来了
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
-
一年一度的河南省程序设计大赛又要来了。
竞赛是要组队的,组队形式:三人为一队,设队长一名,队员两名。
现在问题就来了,给你m个人,要求每队n个人,求共有几种不同的组队方式。
(题目保证m%n等于0,所有数据不超出int范围)
- 输入
- 多组测试数据,以EOF结束。
每组测试数据输入两个整数m,n。 - 输出
- 对每组测试数据输出不同组队方式的数量(考虑到输出的数可能会很大,所以请输出对2013取余后的值),并在输出结束之后输入一个换行符。
- 样例输入
-
4 2
- 样例输出
-
6
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 using namespace std; 5 int fact(int i) 6 { 7 if(i==0 || i==1) 8 return 1; 9 return i*fact(i-1); 10 } 11 int main() 12 { 13 int m,n; 14 while(scanf("%d %d",&m,&n)!=EOF) 15 { 16 int count=0; 17 int flag=1; 18 int a=m/n-1; 19 int b=m; 20 while(a--) 21 { 22 count=(fact(b)/(fact(n)*fact(b-n))); 23 flag*=count; 24 b-=n; 25 } 26 printf("%d\n",flag%2013); 27 //printf("%d %d %d %d\n,a,b,flag,count); 28 } 29 return 0; 30 }