Pagini recente » Cod sursa (job #2824014) | Cod sursa (job #794980) | Cod sursa (job #913025) | Cod sursa (job #102727) | Cod sursa (job #1709775)
#include <fstream>
#include <algorithm>
using namespace std;
int64_t N;
vector<pair<int64_t, int64_t>> d;
vector<pair<int64_t, int64_t>> e;
int main() {
ifstream f("consecutive.in");
ofstream g("consecutive.out");
int T;
for(f >> T; T > 0; T--) {
d.clear();
e.clear();
f >> N;
N <<= 1;
for(int i = 2; 1LL * i * i <= N; i++) {
if(N % i == 0) {
int64_t Z = N / i;
d.push_back(make_pair(i, Z));
}
}
for(vector<pair<int64_t, int64_t>> :: iterator it = d.begin(); it != d.end(); it++) {
int64_t y = (it->first + it->second - 1) / 2;
int64_t x = it->second - y;
if(x > y) swap(x, y);
e.push_back(make_pair(x, y));
}
sort(e.begin(), e.end(), [](pair<int64_t, int64_t> a, pair<int64_t, int64_t> b) {
return a.second - a.first < b.second - b.first; });
g << e.size() << '\n';
for(vector<pair<int64_t, int64_t>> :: iterator it = e.begin(); it != e.end(); it++)
g << it->first << ' ' << it->second << '\n';
}
return 0;
}