Algorithm/PS

[BOJ/백준] 7523 - Gauß [python]

chanwoong1 2023. 3. 20. 01:30
728x90

문제 링크

 

7523번: Gauß

각 테스트 케이스마다 "Scenario #i:"를 출력한 다음, n부터 m까지 모든 정수의 합을 출력한다. 각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.

www.acmicpc.net

문제 풀이

1부터 n까지 자연수의 합 공식인 n * (n + 1) // 2를 이용해준다.

n, m이 10, 100이라면, 1부터 m 까지의 합은 5050이고, 1부터 n까지의 합은 1부터 10까지이므로 55이다.

그렇다면 10부터 100까지 수의 합은 5050 - 55 + 10이 된다.

이말인즉슨, 1부터 100까지의 합 - 1부터 9까지의 합 => 1부터 m까지의 합 - 1부터 n - 1까지의 합으로 생각할 수 있다.

정답 코드

for i in range(1, int(input()) + 1) :
    print(f"Scenario #{i}:")
    n, m = map(int, input().split())
    nn = (n - 1) * n // 2
    mm = (m + 1) * m // 2
    print(mm - nn)
    print()
728x90