SDUT 3931 N!
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
给出两个数 n, m。求 3748-1 和 3748-2。
计算公式:
Input
输入数据有多组(数据组数不超过 250),到 EOF 结束。
对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
Output
对于每组数据输出一行,先输出 “Case #t: ” 表示当前是第几组,t 从 1 开始计数,之后输出 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
Submit
#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;
}