N!

xiaoxiao2021-02-28  251

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.写成函数的形式,很清晰 */
转载请注明原文地址: https://www.6miu.com/read-24993.html

最新回复(0)