- lizexuan's blog
门牌号(number)
- 2023-5-26 20:48:33 @
题目:
题目解析
看注释
代码
//Code written by Li Zexuan (Looks handsome)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll sum = 0;
int main() {
freopen("number.in", "r", stdin);
freopen("number.out", "w", stdout);
ll n;
cin >> n;
for (ll i = 1; ; i++) {
if (n - sum(i) > 0) {
continue;
}
sum += i;
for (ll j = 1; j <= i; j++) {
// 这里提一下, 题目是除去自加门牌号别的门牌号相加,那为什么要求和呢?
// 如果全部相加就比题目多想加了一个自家的门牌号
// 那题目要求减去一个自家的门牌号,而我们又多加了一个,所以要减少两个自家的门牌号
if (sum - 2 * j == n) { // 如果成立即为自家的门牌号
cout << j << ' ' << i << endl; // 输出
return 0;
}
}
}
return 0;
}