진법
진법 : 특정숫자 몇개를 사용하여 수를 표시하는 방법
10진수를 다른 진법으로 바꾸는 경우, 해당수를 진법 수로 바꿈
ex) 10진수 8 -> 16진수로 변환시, 8은 16으로 나누면 나머지 8이므로 8이 그대로,
25를 변환하면 몫은 1, 나머지 9이므로 19
X진수 -> 10진수 바꿀때는, 각 자릿수 마다 2의 제곱 x 해당 자릿수
ex)2진수 10001은 2의 0제곱 =1 / 2의 4제곱 = 16/1+16 =17
/8진수 21은 8의 0제곱 = 1 / 8의 1제곱 = 8 X 2 = 16 / 1 + 16 = 17
2진수 - > 8진수 변환
ex) 2진수 1010100 을 세자리씩 끊는다 / 001 - 010 - 100 /
각 세자리마다 2의 0제곱부터 2제곱까지 배치.
001은 2의 2제곱0 2의 1제곱0 2의 0제곱1 = 1
010은 2의 2제곱0 2의 1제곱1 2의 0제곱0 = 2
100은 2의 2제곱1 2의 1제곱0 2의 0제곱0 = 4
8진수 124
2진수 -> 16진수 변환
ex) 2진수 1010100을 네자리씩 끊는다 / 0101 - 0100
각 네자리마다 2의 0제곱부터 3제곱까지 배치
0101은 2의 3제곱0 2의 2제곱1 2의 1제곱0 2의 0제곱1 = 4+1 = 5
0100은 2의 3제곱0 2의 2제곱1 2의 1제곱0 2의 0제곱0 = 4
16진수 54
-Python 내 의 진법
2진수 = bin() / 8진수 = oct() / 16진수 = hex()
괄호안에 숫자를 넣으면 각 진법의 숫자로 반환
반환된 값은 숫자가 아닌 문자열 (class 'str')
반대로 X진수에서 10진수로 바꿀때는,
print('{} -> {}'.format('0b11110',int('0b11110',2)))
format(int()) 안에 X진수의 값과 X를 넣어주면 된다.
X진수 -> X진수는
print('{} -> {}'.format('0b11110',format(hex(0b11110))))
ex)2진법 0b11110을 16진법으로 바꾸려면 format뒤에 16진법을 나타내는 hex를 넣고 해당 숫자를 넣으면 된다.
수열
규칙성을 가지고 나열되어있는 수
*{an}은 수열을 뜻함
이런식으로 표현 가능
수열의 합은 Sn으로 표현
등차수열
등차수열 : 연속된 두항의 차이가 일정한 수열
ex)2,4,6,8,10.... 공차는 2
일반항 공식 : an = a1 + (n-1) *d(공차)
등차중항 : 연속된 세 항 중 가운데 항
ex) 5,9,13,17,21,25,29,33,37 중 17,21,25 를 보면 21이 등차중항
17+25 = 42 = 21*2 / (17+25)/2 = 21 (등차중항)
등차수열 합
ex)1~10까지의 합(공차:1) / 10(1+10) / 2 = 55
등차수열 중 n번째 항 구하기
inputN1 = int(input('a1 입력: ')) #첫항의 값
inputD = int(input('공차 입력: '))
inputN= int(input('n 입력: ')) #몇번째 값을 알고싶은지
valueN = 0 #n번째 항의 값
n=1
while n <= inputN:
if n == 1:
valueN = inputN1
print('{}번쨰 항의 값 : {}'.format(n,valueN))
n +=1
continue
valueN += inputD
print('{}번째 항의 값 : {}'.format(n,valueN))
n+=1
print('{}번째 항의 값 : {}'.format(inputN,valueN))
#간단히 하면
valueN = inputN1 + (inputN-1)*inputD
print('{}번째 항의 값 : {}'.format(inputN,valueN))
등차수열 중 n번째 항까지의 합 구하기
inputN1 = int(input('a1 입력: ')) #첫항의 값
inputD = int(input('공차 입력: '))
inputN= int(input('n 입력: ')) #몇번째 값을 알고싶은지
valueN = 0
sumN = 0
n = 1
while n <= inputN:
if n == 1:
valueN = inputN1
sumN += valueN
print('{}번째 항까지의 합 : {}'.format(n,sumN))
n +=1
continue
valueN += inputD
sumN += valueN
print('{}번째 항까지의 합 : {}'.format(n,sumN))
n+=1
print('{}번째 항까지의 합 : {}'.format(inputN,sumN))
#간단히 하면
valueN = inputN1 + (inputN-1)*inputD
sumN = inputN*(inputN1+valueN)/2
print('{}번째 항까지의 합 : {}'.format(inputN,int(sumN)))