기초수학(5~8번)
차이가 같은 수열
ex)일반항, n까지 항의 합 출력
inputN1 = int(input('a1 입력 : 5 '))
inputD = int(input('공차 입력 : 4 '))
inputN = int(input('N 입력 : 7 '))
valuenN = 0
sumN = 0
valueN = inputN1 + (inputN - 1) inputD
sumN = inputN (inputN1 + valueN) / 2
print('{}번째까지의 합 : {}'.format(inputN, int(sumN)))
출력값 :
a1 입력 : 5
공차 입력 : 4
N 입력 : 7
7번째까지의 합 : 119
비가 같은 수열
연속된 두 항의 비가 일정한 수열
r : 공비
(일반항)an = a1 x r^(n-1)
(등비수열의 합) sn = a1 x (1-(r^n)) / (1-r)
ex)
inputN1 = int(input('a1 : 2'))
inputR = int(input('공비 : 2'))
inputN = int(input('n : 7'))
valuenN = 0
n = 1
while n <= inputN:
if n == 1:
valuenN = inputN1
print('{}번쨰 항의 값 : {}'.format(n, valuenN))
n += 1
continue
valuenN *= inputR
n += 1
print('{}번째 항의 값 : {}'.format(n, valuenN))
print('{}번쨰 항의 값 : {}'.format(inputN, valuenN))
출력값 :
a1 : 2
공비 : 2
n : 7
1번쨰 항의 값 : 2
3번째 항의 값 : 4
4번째 항의 값 : 8
5번째 항의 값 : 16
6번째 항의 값 : 32
7번째 항의 값 : 64
8번째 항의 값 : 128
7번쨰 항의 값 : 128
ex)an = a1 r^(n-1) 일반항 공식
inputN1 = int(input('a1 : '))
inputR = int(input('공비 : '))
inputN = int(input('n : '))
valuenN = inputN1 * (inputR ** (inputN -1))
print('{}번째 항의 값 : {}'.format(inputN, valuenN))
ex)
inputN1 = int(input('a1 : ' ))
inputR = int(input('공비 : ' ))
inputN = int(input('n : ' ))
valueN = inputN1 x inputR xx (inputN - 1 )
sumN = inputN1 x (1-(inputR xx inputN)) / (1-inputR)
print('{}까지 항의 합 : {}'.format(inputN, sumN))
#(일반항)valueN = a1 x r^(n-1)
#(등비수열의 합) sumN = a1 x (1-(r^n)) / (1-r)
시그마 : 수열의 합을 나타내는 기호이다.
n(끝)
k=1(시작) 일반항 = a1 x r^(k-1)
계차수열 : 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열.
an : {0 3 8 15 24 35 48 63}
bn : {3 5 7 9 11 13 15}
bn은 an의 계차수열이다.
bn의 일반항과 수열의 합을 이용해 an을 구할 수 있다.
시작 k=1, 끝(n-1) , bk= an - a1
EX)
inputAN1 =int(input('a1 값 : '))
inputAN =int(input('an 값 : '))
inputBN1 =int(input('b1 값 : '))
inputBD =int(input('b공차 값 : '))
valueAN = 0
valueBN = 0
n = 1
while n <= inputAN:
if n == 1:
valueAN = inputAN1
valueBN = inputBN1
print('an의 {}번째 항의 값 : {}'.format(n, valueAN))
print('bn의 {}번째 항의 값 : {}'.format(n, valueBN))
n += 1
valueAN += valueBN
valueBN += inputBD
n += 1
print('an의 {}번째 항의 값 : {}'.format(inputAN, valueAN))
print('bn의 {}번째 항의 값 : {}'.format(inputAN, valueBN))
피보나치 : 이탈리아 수학자의 이름.
피보나치 수열 : 세 번째 항은 두 번째 항과 첫 번째 항을 더한 합이다.
팩토리얼 : 1부터 양의 정수 n까지의 정수를 모두 곱한 것
0! ->1 = 1 * 0!은 1로 약속한다.
1! ->1 = 1
2! -> 1 x 2 = 2
3! -> 1 x 2 x 3 = 6
4! -> 1 x 2 x 3 x 4 = 24
ex)
inputNum = int(input('n 입력 : 3'))
result = 1
for n in range(1, (inputNum + 1)):
result *= n
print('{}팩토리얼 : {}'.format(inputNum, result))
출력값 :
n : 3
{3}의 팩토리얼 : 6(1x2x3)
ex)재귀함수를 사용하는 경우
def factorialFun(n):
if n == 1 : return 1
return n * factorialFun(n - 1)
print('{}팩토리얼 : {}'.format(inputNum, factorialFun(inputNum)))
군 수열 : 여러 개의 항을 묶었을 때 규칙성을 가지는 수열
Ex)
inputNum = int(input('n항 입력 : 50'))
fLag = True
n = 1; nCnt = 1; searchN = 0
while fLag:
for i in range(1, (n + 1)):
print('{}, '.format(i), end='')
nCnt += 1
if nCnt > inputNum:
searchN = i
fLag= False
break
print()
n += 1
print('{}항:{}'.format(inputNum, searchN))
출력값 :
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345
50항:5
일렬로 나열하는 경우의 수!
순열 : n개에서 r개를 택하여 나열하는 경우의 수
*순서 중요함.
ex)nPr = 4p3 -> 4 x 3 = 12
순열은 팩토리얼(계승)을 이용해서 나타낼 수 있다.
1. n!/(n-r)! -팩토리얼을 이용한 공식
2. nPr : n(n-1)(n-2)(n-3) .... (n-r+1)