1. 군 수열
여러 개의 항을 묶었을 때 규칙성을 가지는 수열
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) ---
군 수열의 일반항을 구하여 수열의 특정항을 알아낼 수 있음
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))
2. 순열
n개에서 r개를 택하여 나열하는 경우의 수
nPr = n(n-1)(n-2) --- (n-r+1), (단, 0 < r <= n)
-> n! / (n-r)!
ex) 8P3 = 8 7 6 = 8!/5! = 336
원순열 : 시작과 끝의 구분이 없는 수열
n! / n or (n-1)!
#순열
#8P3
import math
numN = 8
numR = 3
result = 1
#1
for n in range(numN, (numN - numR), -1):
print('n : {}'.format(n))
result = result * n
print('result : {}'.format(result))
#2
result = math.factorial(numN) / math.factorial(numN-numR)
print(f'{numN}P{numR} : {int(result)}')