Description
给出两个数 n, m。求
和
。
计算公式:
Input
输入数据有多组(数据组数不超过 250),到 EOF 结束。
对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
Output
对于每组数据输出一行,
和
,用空格隔开。
提醒:因为n!和 m! 数据较大,定义数据类型应用 long long int,输出格式%lld
Sample
Input
1 1 5 3 4 3
Output
1 1 60 10 24 4
Hint
请注意数据范围,可能需要使用 long long 等 64 位整型,输出格式%lld
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long long int amn(long long int n, long long int m){
long long int a, b, c, i;
b = 1;
c = 1;
for(i = 1; i <= n; i++){
b *= i;
}
for(i = 1; i <= (n - m); i++){
c *= i;
}
a = b/c;
return a;
}
long long int cmn(long long int n, long long int m){
long long int a, b, c, d, i;
b = 1;
c = 1;
d = 1;
for(i = 1; i <= n; i++){
b *= i;
}
for(i = 1; i <= (n - m); i++){
c *= i;
}
for(i = 1; i <= m; i++){
d *= i;
}
a = b/(c*d);
return a;
}
int main()
{
long long int n, m, a, c;
while(~scanf("%lld %lld", &n, &m)){
a = amn(n, m);
c = cmn(n, m);
printf("%lld %lld\n", a, c);
}
return 0;
}