[BOJ] 10504. 덧셈
1일 1PS 5일차!
문제
골드 3
- 수학으로 분류되는 문제는 대부분 쉬운 편이다.
- 출력 포맷이 존재하기에 result 를 두어 형태를 맞춰준다.
- IMPOSSIBLE 을 출력하기 위해 while 문에서 나눠지는 지 확인하는 Boolean 값을 둔다.
포인트
- n, n+1, n+2 .. 이런 형태로 연속된다.
- 총 합은 n * cnt + sum 으로 cnt 는 연속된 숫자의 수, sum 은 + 1, + 2 등의 총 합이다.
- n 의 최솟값은 1이기 때문에 1 * cnt + sum > num 이라면 불가능한 경우이다.
- while 문을 돌면서 num - sum 이 cnt 로 나누어 떨이지면 연속된 숫자로 표현할 수 있다.
코드
t = int(input())
for _ in range(t):
num = int(input())
cnt = 2
sum = 1
flag = False
result = ""
while cnt <= num - sum:
if (num - sum) % cnt == 0:
start = (num - sum) // cnt
result += str(num) + " = "
for j in range(cnt):
result += str(start + j) + " + "
print(result[:-2])
flag = True
break
sum += cnt
cnt += 1
if not flag:
print("IMPOSSIBLE")
댓글남기기