82: 求组合数

简介: 82: 求组合数
题目描述

编写一个函数,求从n 个不同的数中取r 个数的所有选择的个数。

输入

输入n 和r 的值; 当用户输入0 0 时,程序结束。

输出

根据公式: C(n,r) = C(n, r-1) * (n - r + 1) / r 输出运算结果 输入数据不满足题意时候,输出"error!"

样例输入复制

5 3

10 20

50 3

0 0

样例输出复制

10

error!

19600


def factorial(n):
    s=1
    for i in range(1,n+1):
        s=s*i
    return s
while True:
    try:
        n,r=map(int,input().split())
        if n<r:
            print("error!")
        elif n==0 and r==0:
            break
        else:
            res=factorial(n)//factorial(n-r)//factorial(r)
            print(res)
    except EOFError:
        break
相关文章
|
7月前
1056 组合数的和 (15 分)
1056 组合数的和 (15 分)
|
算法
【排列组合】子集生成
【排列组合】子集生成
61 0
|
算法 内存技术
求组合数三种算法
求组合数三种算法
91 0
|
存储 算法 C++
区间和算法的实现
区间和算法的实现
|
C语言 C++
1056 组合数的和 (15 分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
109 0
排列组合
排列组合在笔试面试中不会太难,一般有以下的特点: image.png 案例1 案例2 案例3 案例4 案例5 案例6 其实还有一些比较难的排列组合的题,这里就不意义列举了。
925 0
|
机器学习/深度学习 算法 存储