Pagini recente » Cod sursa (job #2621892) | Cod sursa (job #1517602) | Cod sursa (job #2454670) | Cod sursa (job #2044832) | Cod sursa (job #1787705)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("consecutive.in");
ofstream g("consecutive.out");
int t;
long long n;
vector< pair<int, int> > all;
bool cmp(const pair<int, int> p1, const pair<int, int> p2)
{
return p1.second - p1.first < p2.second - p2.first;
}
int main()
{
f >> t;
for (; t--; ) {
f >> n;
all.clear();
long long tmp = 2 * n;
for (int i = 2; 1LL * i*i <= tmp; i++) {
if (tmp%i == 0) {
long long first = tmp / i - (i - 1);
long long second = i - (tmp / i - 1);
if (first > 0 && first % 2 == 0)
all.push_back(make_pair(first / 2, first / 2 + i - 1));
if (second > 0 && second % 2 == 0 && i != tmp / i)
all.push_back(make_pair(second / 2, second / 2 + tmp / i - 1));
}
}
sort(all.begin(), all.end(), cmp);
g << all.size() << "\n";
for (auto it = all.begin(); it != all.end(); it++)
g << it->first << " " << it->second << "\n";
}
}