Algorithm
Theofanis has a riddle for you and if you manage to solve it, he will give you a Cypriot snack halloumi for free (Cypriot cheese).
You are given an integer n. You need to find two integers l and r such that −1018≤l<r≤1018 and l+(l+1)+…+(r−1)+r=n.
The first line contains a single integer t (1≤t≤104) — the number of test cases.
The first and only line of each test case contains a single integer n (1≤n≤1018).
For each test case, print the two integers l and r such that −1018≤l<r≤1018 and l+(l+1)+…+(r−1)+r=n.
It can be proven that an answer always exists. If there are multiple answers, print any.
7 1 2 3 6 100 25 3000000000000
0 1 -1 2 1 2 1 3 18 22 -2 7 999999999999 1000000000001
In the first test case, 0+1=1.
In the second test case, (−1)+0+1+2=2.
In the fourth test case, 1+2+3=6.
In the fifth test case, 18+19+20+21+22=100.
In the sixth test case, (−2)+(−1)+0+1+2+3+4+5+6+7=25.
Code Examples
#1 Code Example with C++ Programming
Code -
C++ Programming
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define debug(n) cout<<(n)<<endl;
const ll INF = 2e18 + 99;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
ll n;
while(t--){
cin>>n;
cout<<(-1 * (n - 1))<<" "<<n<<endl;
}
}
Copy The Code &
Try With Live Editor
Input
1
2
3
6
100
25
3000000000000
Output
-1 2
1 2
1 3
18 22
-2 7
999999999999 1000000000001
Demonstration
Codeforcess Solution 1594-A A. Consecutive Sum Riddle ,C++, Java, Js and Python ,1594-A,Codeforcess Solution