def solution(n):
answer = 0
two = [1,2,4,8,16,32,128,256,512,1024,2048,4196,8392]
if n in two: # n이 2의 제곱일 경우
return 1
l = [i for i in range(1, n+1)] # 1~n까지 수
for j in range(n//2+1): # 더해지는 수가 n//2를 넘어가면 연속하는 자연수 없음
a = 0
for i in l:
a += i # l에 있는 수를 앞에서부터 더함
if a > n:
del l[0]
break
if a == n: # 더한 수가 n과 같아지면 answer에 +1
answer += 1
del l[0] # 리스트 첫 번째 값 삭제
break
return answer + 1 # 자기자신도 조건을 만족하므로 +1
2의 제곱일 경우 무조건 자기자신만 조건을 만족하므로 1을 return
10,000보다 작거나 같은 2의 제곱이 많지는 않아서 직접 계산함
def two(N):
num = 1
while True:
# 2의 제곱이면 1 return
if num == N:
return 1
break
# 2의 제곱이 아니면 0 return
elif num > N:
return 0
break
num *= 2
def expressions(num):
answer = 0
for i in range(1, num+1):
summ = 0
# i부터 1씩 증가하며 합이 num보다 작을 때까지 더함
while (summ < num):
summ += i
i += 1
if summ == num: # 합이 num과 같다면 answer에 +1
answer += 1
return answer