Pagini recente » Cod sursa (job #457684) | Cod sursa (job #3173271) | Cod sursa (job #1925316) | Cod sursa (job #3181878) | Cod sursa (job #1709280)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <utility>
using namespace std;
int main()
{
ifstream in("consecutive.in");
ofstream out("consecutive.out");
std::vector< std::pair<int, int> > sums;
int T;
in >> T;
for (int t = 0; t < T; ++t) {
int N;
in >> N;
sums.clear();
int d = 2, lim = int(sqrt(1 + 8LL*N)) / 2;
while (d <= lim) {
int mid = N / d;
int rm = (N - mid * d);
int a, b;
if ((d & 1) == 1 && rm == 0) {
a = mid - d/2;
b = mid + d/2;
}
else if (((d & 1) == 0 && rm == (d >> 1))) {
a = mid - d/2 + 1;
b = mid + d/2;
}
else {
d += 1;
continue;
}
if (a > 0) {
sums.push_back({a, b});
}
else {
break;
}
d += 1;
}
out << sums.size() << '\n';
for (std::pair<int, int>& p : sums) {
out << p.first << " " << p.second << "\n";
}
}
out.flush();
return 0;
}