プログラミング入門I 宿題 2024.12.02

Back


順列と組み合わせについて考えてみましょう.7から10の範囲の整数と3から5の範囲の整数をそれぞれ1つずつ乱数で発生させて,mn とします.このとき順列と組み合わせ mPnmCn を計算するプログラムを作成しましょう.

一応順列と組み合わせの計算式を以下に載せておきます.

Student number: s246099

10P3 = 720
10C3 = 120

------------------------

前回の演習問題で取り組んだ階乗計算がそのまま使えます.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がPythonのプログラムとなっていますので,実行してエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,実行時にエラーが出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

# #############################
#
# プログラミング入門I 宿題 2024.12.2
# 学生番号:  s236099
# 氏名:     松江 花子
#
# #############################

import random

print('Student number: s246099')
print('')

m = random.randint(7, 10)
n = random.randint(3, 5)

#m, n = 10, 3

fact_m = 1
fact_n = 1
fact_mn = 1

for i in range(1, m + 1):
    fact_m *= i

for i in range(1, n + 1):
    fact_n *= i

for i in range(1, m - n + 1):
    fact_mn *= i

perm = fact_m // fact_mn
comb = perm // fact_n

print(f'{m}P{n} = {perm}')
print(f'{m}C{n} = {comb}')

print('\n------------------------\n')


自作関数を用いた解答例

Back