【TFLSnoi---c1908李志帅的第⑩+④篇文章】---E - 小Z家的门牌号(进阶习题)

E - 小Z家的门牌号(进阶习题)

这道题很经典,遇见好几次了(虽说还是没记住。。。

 

小Z家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。

 

若其余各家的门牌号之和减去小Z家门牌号的两倍,恰好等于n,求小Z家的门牌号及总共有多少家。(有多解的情况下输出总家庭数最少的方案,题目肯定有解)

Input

一个正整数T(10<=T<=1000),表示一共有T组询问 接下来T行,每行一个整数n(0 <100000)Output输出一共T行,每行两个整数a b(用空格隔开,表示小Z家的门牌号及总共有多少家,有多解的情况下输出总家庭数最少的方案)

Sample Input

5
15
90
63
46
3

Sample Output

2 6
5 14
1 11
3 10
1 3



————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
满分代码:

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,m,sum=1;
 6     cin>>m;
 7     while(m--){
 8         cin>>n;
 9         for(int i=2;;i++){
10             sum+=i;
11             if((sum-n)%3==0 && (sum-n)>0){//因为是其余门牌号之和减2*小Z家门牌号,可以看成门牌号之和-3*小Z家门牌号,还要判断结果是否为正数
12                 cout<<(sum-n)/3<<" "<<i<<endl;
13                 break;
14             }
15         }
16         sum=1;//别忘了初始化sum
17     }
18     return 0;
19 }

 

posted @ 2020-08-20 12:36  九州霜  阅读(312)  评论(0编辑  收藏  举报