팩토리얼
반복문 이용
#for 반복문 사용
inputN = int(input('n 입력: '))
result = 1
for n in range(1, inputN +1):
result *=n
print('{}팩토리얼 : {}'.format(inputN,result))
#while 반복문 사용
result = 1
n=1
while n <= inputN:
result *= n
n +=1
print('{}팩토리얼 : {}'.format(inputN, result))
반복문 함수 이용
def facFun1(n):
fac = 1
for n in range(1,(n+1)):
fac = fac * n
return fac
num = int(input('input Number: '))
print(f'{num}! : {facFun1(num)}')
재귀함수 이용
def facFun2(n):
if n ==1:
return n
return n * facFun2(n-1)
num = int(input('input Number: '))
print(f'{num}! : {facFun2(num)}')
군수열
flag = True
n=1 #군을 뜻함
nCnt=1 #항을 뜻함
searchNC = 0; searchNP= 0; sumN=0
while flag:
for i in range(1,(n+1)):
print(' {}/{} '.format(i, (n-i+1)),end='')
sumN += (i/(n-i+1))
nCnt +=1
if sumN > 100:
searchNC = i
searchNP = n-i+1
flag = False
break
print()
n+=1
print('수열 합이 100을 초과하는 항, 값, 합 : {}항, {}/{}, {}'.format(nCnt, searchNC,searchNP,round(sumN,2)))
순열
일렬로 나열하는 경우의 수
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: ')) #n개에서 r개 뽑기
result = 1
for n in range(numN,(numN-numR),-1):
print('n : {}'.format(n))
result = result * n
print('result : {}'.format(result))
1,2,3,4,5,6,7 카드 중 2,4,7 카드가 서로 이웃하는 경우의 수
2,4,7을 묶어서 보고 5에 대한 순열을 구하고
2,4,7 간의 순열을 구하면 된다.
5! X 3!
fNum1 = int(input('factorial1 : '))
fNum2 = int(input('factorial2 : '))
result1 = 1
result2 = 1
for n in range(fNum1,0,-1):
result1 = result1*n
print('result1 : {}'.format(result1))
for n in range(fNum2,0,-1):
result2 = result2*n
print('result2 : {}'.format(result2))
result3 = result1 * result2
조합
순서 상관없이 r개선택하기
nCr = (nPr / r!) = (n! / r!(n-r)!)
4C3 = 4P3 / 3!=> 432 / 123
4C3 = (4! / 3!(4-3)!) => 4321 / 32*1(1)
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
resultP =1
resultR = 1
resultC = 1
for n in range(numN,(numN-numR),-1): #순열구하기
resultP = resultP * n
print('resultP : {}'.format(resultP))
for n in range(numR,0,-1):
resultR = resultR *n
print('resultR : {}'.format(resultR))
resultC = resultP/resultR
print('resultC : {}'.format(int(resultC)))
1,2,3,4,5,6,7 카드 중 3,4,5가 동시에 선택되는 확률
7장 중 3장 뽑는 조합의 수 = 35개
3,4,5조합 = 1개
1/35 의 확률
result = (1/resultC)*100 #백분율 표시를 위해 곱하기 100
print('{}%'.format(round(result,2)))
확률
6장을 뽑는 사건 : 10C6
꽝 3장을 뽑는 사건 : 6C3
선물 3장 뽑는 사건 : 4C3
6C3 * 4C3 / 10C6 하면 확률이 나온다.
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 = resultP * n
print('resultP : {}'.format(resultP))
#R!
for n in range(numR, 0, -1):
resultR = resultR * n
print('resultR : {}'.format(resultR))
#조합
resultC = int(resultP/ resultR)
print('resultC : {}'.format(resultC))
return resultC
sample = proFun()
print('10장 중 6장: {}'.format(sample))
event1 = proFun()
print('꽝 6장 중 3장 : {}'.format(event1))
event2 = proFun()
print('선물 4장 중 3장 : {}'.format(event2))
probability = (event1*event2)/sample
print('확률 : {}%'.format(round(probability*100,2)))