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
",flag%2013);
27         //printf("%d %d %d %d
,a,b,flag,count);
28     }
29     return 0;
30 }
原文地址:https://www.cnblogs.com/caterpillarofharvard/p/4230562.html