N!
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
代码:
#include <stdio.h>
long long Anm(int n, int m);
long long Cnm(int n, int m);
long long fac(int k);
int main()
{
long long A, C;
int n, m;
while(scanf("%d %d", &n, &m) != EOF)
{
A = Anm(n, m);
C = Cnm(n, m);
printf("%lld %lld\n", A, C);
}
return 0;
}
long long Anm(int n, int m)
{
long long A;
A = fac(n) / fac(n - m);
return A;
}
long long Cnm(int n, int m)
{
long long C;
C = fac(n) / fac(n - m) /fac(m);
return C;
}
long long fac(int k)
{
long long int y = 1;
int i;
for(i = 1; i <= k; i++)
{
y = y * i;
}
return y;
}