an = {0,3,8,15,24,35,48,63} -> 각 항의 차가 {bn}
bn = {3,5,7,9,11,13,15} -> 등차수열
-> {bn}은 {an}의 계차 수열
b1 = a2 - a1
b2 = a3 - a2
b3 = a4 - a3
b4 = a5 - a4
b(n-1) = an - a(n-1)
-> b1~b(n-1)의 합은 a1 + an과 같음
-> bn을 이용해서 an을 구할 수 있음
a1 = 1, a2 = 1이고 n>2일때
an = a(n-2) + a(n-1)
inputN = int(input('n 입력: '))
valueN = 0
sumN = 0
valuePreN2 = 0 #a(n-2)
valuePreN1 = 0 #a(n-1)
n = 1
while n <= inputN:
if n == 1 or n == 2:
valueN = 1
valuePreN2 = valueN
valuePreN1 = valueN
sumN += valueN
n += 1
else:
valueN = valuePreN2 + valuePreN1 #피보나치 수열 공식
valuePreN2 = valuePreN1 #다음 계산을 위해 순서를 다음으로 옮김
valuePreN1 = valueN
sumN += valueN
n += 1
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 합: {}'.format(inputN, sumN))
0! = 1
1! = 1
2! = 1X2
3! = 1X2X3
def factorialFun(n):
if n == 1:
return 1
return n * factorialFun(n-1)
print('{} 팩토리얼: {}'.format(inputN, factorialFun(inputN)))
inputN = int(input('n 입력: '))
result = 1
for n in range(1, inputN+1):
result *= n
print('{} 팩토리얼: {}'.format(inputN, result))
import math
math.factorial(inputN)
1,1,2,1,2,3,1,2,3,4,1,2,3,4,5
(1),(1,2),(1,2,3),(1,2,3,4),(1,2,3,4,5)
-> 1군에 1개의 항, 2군에 2개의 항, 3군에 3개의 항,.. 존재
-> 각 군은 첫째항 1, 공차 1의 등차수열
inputN = int(input('n항 입력: '))
flag = True
n = 1; nCnt = 1; searchN = 0 #nCnt: 전체에서 몇번째 항인지 세는 역할
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))
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
result = 1
for n in range(numN, (numN-numR), -1): #(n-r+1)까지 곱해야 하기 때문에
print('n: {}'.format(n))
result *= n
print('result: {}'.format(result))
for i in range(1, n): #1부터 n-1까지 곱하기 -> (n-1)!
result *= i
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('result: {}'.format(resultP)) # resultP : nPr의 결과값
for n in range(numR, 0, -1):
print('n: {}'.format(n))
resultR *= n
print('result: {}'.format(resultR)) # resultR : r!의 결과값
resultC = int(resultP / resultR) # nCr = nPr/r!
print('result: {}'.format(resultC))
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('resultP: {}'.format(resultP))
for n in range(numR, 0, -1):
resultR *= n
print('resultR: {}'.format(resultR))
resultC = int(resultP / resultR)
print('resultC: {}'.format(resultC))
return resultC
sample = proFun()
print('sample: {}'.format(sample))
event1 = proFun()
print('event1: {}'.format(event1))
event2 = proFun()
print('event2: {}'.format(event2))
probability = (event1 * event2) / sample * 100
print('probability: {}%'.format(round(probability, 2)))
-> 조합을 구해주는 함수를 만들어서 세 번 쓰기
<제로베이스 데이터 취업 스쿨>