inputN1 = int(input('첫째날 받은 쌀 :'))
inputR = int(input('둘째 이후째날 받은 쌀 :'))
inputN = int(input('n일 이후 받은 쌀 :'))
valueN = 0
sumN = 0
n= 1
while n <= inputN:
if n == 1:
valueN = inputN1
sumN += valueN
n+=1
continue
valueN *=inputR
sumN += valueN
print(f'{n}날 받은 쌀 : {sumN}')
n+=1
print(f'{inputN}날 받은 총 쌀의 양 : {sumN}')
첫째날 받은 쌀 :2
둘째 이후째날 받은 쌀 :2
n일 이후 받은 쌀 :30
2날 받은 쌀 : 6
3날 받은 쌀 : 14
4날 받은 쌀 : 30
.
.
.
28날 받은 쌀 : 536870910
29날 받은 쌀 : 1073741822
30날 받은 쌀 : 2147483646
30날 받은 총 쌀의 양 : 2147483646
#계차수열
# an = (3n^2-3n+4) / 2
#an의 일반항 공식을 먼저 구하고 공식으로 코드를 짜면 쉬움
numA1 = 2
numAN = int(input('an 입력: '))
valueN = (3*numAN ** 2 -3*numAN + 4) /2
print(f'{numAN}번째 항 : {int(valueN)}')
an 입력: 10
10번째 항 : 137
inputN = int(input('n 입력: '))
valueN = 0; sumN = 0
valuePre2 = 0
valuePre1 = 0
n=1
while n <= inputN:
if n ==1 or n ==2:
valueN = 1
valuePre1 = valueN
valuePre2 = valueN
sumN += valueN
n+=1
else:
valueN = valuePre1 + valuePre2
valuePre2 = valuePre1
valuePre1 = valueN
sumN += valueN
n+=1
print(f'{inputN}번째 항의 값 : {valueN}')
print(f'{inputN}번째 항까지의 합 : {sumN}')
n 입력: 8
8번째 항의 값 : 21
8번째 항까지의 합 : 54
import math
inputN = int(input('n 입력 : '))
#반복문 함수
def factorialFun1(i):
result = 1
for i in range(1, i+1):
result *= i
return result
#재귀함수
def factorialFun2(n):
if n == 1:
return n
return n * factorialFun2(n-1)
print(f'반복문 함수를 사용한 {inputN}의 팩토리얼 : {factorialFun1(inputN)}')
print(f'재귀함수를 사용한 {inputN}의 팩토리얼 : {factorialFun2(inputN)}')
print(f'모듈을 사용한 {inputN}의 팩토리얼 : {math.factorial(inputN)}')
n 입력 : 5
반복문 함수를 사용한 5의 팩토리얼 : 120
재귀함수를 사용한 5의 팩토리얼 : 120
모듈을 사용한 5의 팩토리얼 : 120
flag = True
sumN = 0
n = 1
nCnt = 1 #n항
searchNC = 0 #분자 값
searchNP = 0 #분모 값
while flag:
for i in range(1,n+1):
print(f'{i}/{n-i+1} ',end='') #분모 분자 --> 분자는 1씩증가, 분모는 역순
sumN += i/(n-i+1)
nCnt +=1
if sumN >100:
searchNC = i
searchNP = n-i+1
flag = False
break
print()
n+=1
print(f'수열의 합이 최초 100을 초과하는 항, 값, 합 : {nCnt}항, 값 : {searchNC}/{searchNP}, \
합 : {round(sumN,2)}')
1/1
1/2 2/1
1/3 2/2 3/1
1/4 2/3 3/2 4/1
1/5 2/4 3/3 4/2 5/1
1/6 2/5 3/4 4/3 5/2 6/1
1/7 2/6 3/5 4/4 5/3 6/2 7/1
1/8 2/7 3/6 4/5 5/4 6/3 7/2 8/1
1/9 2/8 3/7 4/6 5/5 6/4 7/3 8/2 9/1
1/10 2/9 3/8 4/7 5/6 6/5 7/4 8/3 9/2 10/1
수열의 합이 최초 100을 초과하는 항, 값, 합 : 56항, 값 : 10/1, 합 : 105.81
num1 = int(input('n 입력 : '))
num2 = int(input('r 입력 : '))
result = 1
for i in range(num1, num1-num2, -1):
result *= i
print(f'{num1}에서 {num2}개 뽑을 경우의 수 : {result}')
n 입력 : 9
r 입력 : 4
9에서 4개 뽑을 경우의 수 : 3024
2,4,7을 한 카드로 보면 5가지 카드이고
5가지 카드 경우의 수와 2,4,7을 나열하는 경우의수를 곱하면 전체 경우의 수
5! * 3!
fNum1 = int(input('factorial 1 입력 : '))
result1 = 1
fNum2 = int(input('factorial 2 입력 : '))
result2 = 1
for n in range(fNum1, 0, -1):
result1 *= n
print(f'result1 : {result1}')
for n in range(fNum2, 0, -1):
result2 *= n
print(f'result2 : {result2}')
result = result1 * result2
print(f'모든 경우의 수 : {result}')
factorial 1 입력 : 5
factorial 2 입력 : 3
result1 : 120
result2 : 6
모든 경우의 수 : 720
numN = int(input('n 입력: '))
numR = int(input('r 입력: '))
resultP = 1
resultR = 1
resultC = 1
for i in range(numN, numN-numR, -1):
resultP *= i
for i in range(numR, 0, -1):
resultR *= i
resultC = resultP / resultR
print(f'resultC : {int(resultC)}')
result = 1/resultC *100
print(f'3,4,5가 선택 될 확률 : {round(result,2)}%')
n 입력: 7
r 입력: 3
resultC : 35
3,4,5가 선택 될 확률 : 2.86%
꽝이나 선물을 뽑는 것은 순서에 상관이 없기 때문에 조합을 사용한다.
확률은 사건 / 표본공간 *100 으로 계산한다
이 문제에서는 표본공간은 10장 중 6장을 뽑는 것이고
사건은 6개 꽝중에 꽝3개 뽑는 것과 4개 선물 중 3개 뽑는 것이다.
def Combination():
numN = int(input('n 입력: '))
numR = int(input('r 입력: '))
resultP = 1
resultR = 1
resultC = 1
for i in range(numN, numN-numR, -1):
resultP *= i
for i in range(numR, 0, -1):
resultR *= i
resultC = resultP / resultR
return resultC
sample = Combination()
print(f'전체 10장에서 6장 뽑는 경우의 수 : {sample}')
event1 = Combination()
print(f'꽝 6장 중 3장 뽑을 경우의 수 : {int(event1)}')
event2 = Combination()
print(f'선물 4장 중 3장 뽑는 경우의 수 : {int(event2)}')
result = event1 * event2 / sample *100
print(f'10장 중 꽝3장 선물3장 뽑을 확률 : {round(result,2)}%')
n 입력: 10
r 입력: 6
전체 10장에서 6장 뽑는 경우의 수 : 210.0
n 입력: 6
r 입력: 3
꽝 6장 중 3장 뽑을 경우의 수 : 20
n 입력: 4
r 입력: 3
선물 4장 중 3장 뽑는 경우의 수 : 4
10장 중 꽝3장 선물3장 뽑을 확률 : 38.1%