Codeforces Round #747 (Div. 2)-A. Consecutive Sum Riddle
falconlee236
·2021. 11. 11. 23:38
문제 설명
지우는 정수에게 수수께끼를 냈다.
정수 $n$이 있는데, 우리가 구해야 할 것은 $-10^{18} \le l < r \le 10^{18}$ 과 $l + (l + 1) + ... + (r - l) + r = n$ 을 만족하는 두 정수 $l$과 $r$을 구해야 한다.
Input
첫번째 줄에는 테스트 케이스의 수 $t (1 \le t \le 10^4)$ 이 주어진다.
각 테스트 케이스의 첫번째 줄에는 정수 $n (1 \le n \le 10^{18})$이 주어진다.
Output
각 테스트케이스마다 $-10^{18} \le l < r \le 10^{18}$ 과 $l + (l + 1) + ... + (r - l) + r = n$ 을 만족하는 두 정수 $l$과 $r$을 출력한다.
답이 여러개 있으면 아무거나 출력한다.
Example
input
7
1
2
3
6
100
25
3000000000000
output
0 1
-1 2
1 2
1 3
18 22
-2 7
999999999999 1000000000001
문제 접근
사용한 알고리즘: 수학
걸린 시간 : 00:02
이지하다. 유연한 사고와 A번 문제는 쉽다는 믿음을 가지고 있으면 금방 풀 수 있는 문제이다.
$l = -(n - 1), r = n$ 으로 하면 $l$ 부터 $r$까지 더했을 때 $n$이 나온다.
정답 코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t; cin >> t;
while(t--){
long long n; cin >> n;
cout << -(n - 1) << " " << n << "\n";
}
return 0;
}
'알고리즘 > codeforces' 카테고리의 다른 글
Codeforces Round #747 (Div. 2)-C. Make Them Equal (0) | 2021.11.13 |
---|---|
Codeforces Round #747 (Div. 2)-B. Special Numbers (0) | 2021.11.13 |
Codeforces Round #746 (Div. 2)-B. Hemose Shopping (0) | 2021.11.10 |
Codeforces Round #746 (Div. 2)-A. Gamer Hemose (0) | 2021.11.10 |
Educational Codeforces Round 114 (Rated for Div. 2)-C. Slay the Dragon (0) | 2021.11.10 |