N!
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
给出两个数 n, m。求 3748-1 和 3748-2。
计算公式:
3748-3
Input
输入数据有多组(数据组数不超过 250),到 EOF 结束。
对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
Output
对于每组数据输出一行, 3748-1 和 3748-2,用空格隔开。
Example Input
1 1
20 1
20 10
Example Output
1 1
20 20
670442572800 184756
Hint
Author
「“师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛」MLE_kenan
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void judge(int n,int m)
{
long long int A,C,s = 1,g = 1,b = 1;
int i;
for(i = n;i >= 1;i--)//计算n的阶层
{
s = s*i;
}
for(i = n-m;i >=1 ;i--)//计算n-m的阶层
{
g = g * i;
}
A = s / g;
for(i = m;i >= 1;i--)//计算m的阶层
{
b = b * i;
}
C = s /(g*b);
printf("%lld %lld\n",A,C);
}
int main()
{
int n,m;
int a = 250;
while(scanf("%d %d",&n,&m)!=EOF&&a)
{
judge(n,m);
a--;
}
return 0;
}