0! = 1로 약속
ex. n!를 출력하는 프로그램
for in 반복문
inputN = int(input('n 입력 : '))
result = 1 # 곱하는 거는 1
for n in range(1, (inputN + 1)):
result *= n
print(f'{inputN} 팩토리얼 : {result}')
while 반복문
inputN = int(input('n 입력 : '))
result = 1
n = 1
while n <= inputN:
result *= n
n += 1
print(f'{inputN} 팩토리얼 : {result}')
재귀함수
inputN = int(input('n 입력 : '))
def factorialFun(n):
if n == 1:
return 1
return n * factorialFun(n - 1)
print(f'{inputN} 팩토리얼 : {factorialFun(inputN)}')
math 모듈
import math
inputN = int(input('n 입력 : '))
result = math.factorial(inputN)
print(f'{inputN} 팩토리얼 : {result}')
(1), (1, 2), (1, 2, 3), (1, 2, 3, 4) ...
항의 개수 an = a1 + (n - 1) d, sn = n (a1 + an) / 2
-> an = n, sn = (n ** 2 + n) / 2
ex. 군 수열의 n번째 항의 값을 출력하는 프로그램
(1), (1, 2), (1, 2, 3), (1, 2, 3, 4) ...
inputN = int(input('n항 입력 : ')) # 몇 번째 항
flag = True
n = 1 # 군
nCnt = 1 # 전체 항
searchN = 0 # 찾는 항의 값
while flag:
for i in range(1, (n + 1)):
if i == n:
print('{}'.format(i), end='')
else:
print('{},'.format(i), end='')
nCnt += 1 # 전체 몇 번째 항
if nCnt > inputN:
searchN = i
flag = False
break
print()
n += 1 # 군의 반복
print('{}항 : {}'.format(inputN, searchN))
nPr = n (n - 1) (n - 2) ... (n - r + 1) (단, 0 < r <= n)
nPr = n! / (n - r)!
원 순열 : 시작과 끝의 구분이 없는 순열 an = (n - 1)!
ex. 순열의 값을 구하는 프로그램
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
result = 1
for n in range(numN, (numN - numR), -1):
print(f'n : {n}')
result *= n
print(f'result : {result}')
nCr = nPr / r! = n! / r! * (n - r)!
ex. 조합의 값을 구하는 프로그램
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1):
print('n : {}'.format(n))
resultP *= n
print('resultP : {}'.format(resultP))
for n in range(numR, 0, -1):
print('n : {}'.format(n))
resultR *= n
print('resultR : {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC : {}'.format(resultC))
박스에 전체 종이 n장
박스에 꽝이 적힌 종이가 n1장 있고, 선물이 적힌 종이가 n2장 있을 때,
꽝 r1장과 선물 r2장을 뽑을 확률을 출력 (단, n = n1 + n2)
def proFun():
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1):
resultP *= n
print(f'resultP : {resultP}')
for n in range(numR, 0, -1):
resultR *= n
print(f'resultR : {resultR}')
resultC = int(resultP / resultR)
print(f'resultC : {resultC}')
return resultC
sample = proFun()
print(f'sample : {sample}')
event1 = proFun()
print(f'event1 : {event1}')
event2 = proFun()
print(f'event2 : {event2}')
probability = (event1 * event2) / sample
print(f'probability : {round(probability * 100, 2)}%')