传送门:点击打开链接
N!
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
给出两个数 n, m。求 和 。
计算公式:
Input
输入数据有多组(数据组数不超过 250),到 EOF 结束。
对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
Output
对于每组数据输出一行, 和 。
Example Input
1 1 20 1 20 10
Example Output
1 1 20 20 670442572800 184756
Hint
请注意数据范围,可能需要使用 long long 等 64 位整型。
大水题,一开始输出的地方让输出case #:,交了wa,然后改题面,不输出。。。。就这样被罚时,无fuck说。
代码实现:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
long long sum1,sum2;
void find(int m,int n)
{
int i,j,k;
long long count1=1,count2=1,count3=1;
for(i=1;i<=n;i++)
count1*=i;
for(i=1;i<=m;i++)
count2*=i;
for(i=1;i<=(n-m);i++)
count3*=i;
sum1=count1/count3;
sum2=count1/(count2*count3);
}
int main()
{
int m,n,flag=1;
while(scanf("%d%d",&n,&m)!=EOF)
{
find(m,n);
cout<<sum1<<' '<<sum2<<endl;
}
return 0;
}