N!
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
给出两个数 n, m。求 和
。
计算公式:
Input
输入数据有多组(数据组数不超过 250),到 EOF 结束。
对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
Output
对于每组数据输出一行,先输出 "Case #t: " 表示当前是第几组,t 从 1 开始计数,之后输出 和
。
Example Input
1 1 20 1 20 10
Example Output
1 1 20 20 670442572800 184756
Hint
#include <bits/stdc++.h>
using namespace std;
long long n[25];
void mems()
{
n[0] = 1;
for(int i = 1; i <= 20; i++)
n[i] = n[i-1] * i;
}
int main()
{
mems();
int N, M;
while(~scanf("%d%d", &N, &M))
printf("%lld %lld\n", n[N]/n[N-M], n[N]/(n[N-M]*n[M]));
return 0;
}
//1.先把数全部算出来存好,往后直接调用
/*#include <stdio.h>
long long get(int a)
{
long long sum = 1;
for(int i=1; i<=a; i++)
{
sum *= i;
}
return sum;
}
int main()
{
int n, m;
while(scanf("%d %d",&n,&m) != EOF)
{
long long b = get(n)/get(n-m);
printf("%lld %lld\n",b,b/get(m));
}
}
//1.写成函数的形式,很清晰
*/