小Z家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若其余各家的门牌号之和减去小Z家门牌号的两倍,恰好等于n,求小Z家的门牌号及总共有多少家。(有多解的情况下输出总家庭数最少的方案,题目肯定有解)
收起
输入
一个正整数T(10<=T<=1000),表示一共有T组询问
接下来T行,每行一个整数n(0<n<100000)
输出
输出一共T行,每行两个整数a b(用空格隔开,表示小Z家的门牌号及总共有多少家,有多解的情况下输出总家庭数最少的方案)
输入样例
5
15
90
63
46
3
输出样例
2 6
5 14
1 11
3 10
1 3
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
for(;T--;)
{
long long n;
cin >> n;
long long sum = 0;
for(long long i = 1; ; i++)
{
sum += i;
// cout << sum << endl;
if(sum > n )
{
long long chazhi = sum - n;
if(chazhi % 3 == 0)
{
cout << (long long)(chazhi/3) << " " << i << endl;
break;
}
}
}
}
return 0;
}
来源:https://blog.csdn.net/weixin_41791402/article/details/100835513