题目:

门牌号(number)

题目解析

看注释

代码

//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;
}