알고리즘 연습/수학, 정수론, 기하
[🥉3 / 백준 2355 / 파이썬] 시그마
김세진
2022. 3. 22. 16:55
반응형
2355번: 시그마
첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)
www.acmicpc.net
문제
두 정수 A와 B가 주어졌을 때, 두 정수 사이에 있는 수의 합을 구하는 프로그램을 작성하시오. 사이에 있는 수들은 A와 B도 포함한다.
입력
첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)
출력
첫째 줄에 답을 출력한다. (-2,147,483,648 ≤ 답 ≤ 2,147,483,647)
예제 입력1 2
|
예제 출력3
|
풀이
범위가 매우 넓기 때문에 단순 for문으로 계산을 시도하면 시간초과 혹은 메모리초과가 발생하게 된다.
따라서 O(1)만에 문제를 해결할 수 있는 가우스의 공식을 활용한다.
1부터 n까지의 합은 (n+1) * n // 2 라고 표현할 수 있다.
하지만, 이 문제는 1부터의 합이 아닌 a부터 b까지의 합이다.
따라서, 1부터 b까지의 합과 1부터 a-1까지의 합의 차를 출력한다.
단, a < b로 고정하기 위해 a가 b보다 크면 두 수를 교체해준다.
a,b = map(int,input().split())
if a>b:
a,b=b,a
print(b*(b+1)//2-a*(a-1)//2)반응형