Pagini recente » Cod sursa (job #1369773) | Cod sursa (job #829474) | Cod sursa (job #416248) | Cod sursa (job #1993474) | Cod sursa (job #1709553)
#include<iostream>
#include<fstream>
#include<vector>
#include<math.h>
#include<set>
using namespace std;
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
long long T, N;
long long num_sol;
int sol_found = 0;
int main()
{
fin >> T;
for (long long t = 0; t < T; t++) {
fin >> N;
num_sol = 0;
int s = sqrt(N);
set<pair<int, pair<int, int>>> st;
for (int i = 2; i <= s; i++) {
if (N % i == 0) {
int div = N / i;
if (i % 2 != 0) {
st.insert(make_pair(i, make_pair(div - (i - 1) / 2, div + (i - 1) / 2)));
num_sol++;
}
if (div % 2 != 0 && div != i) {
st.insert(make_pair(div, make_pair(i - (div - 1) / 2, i + (div - 1) / 2)));
num_sol++;
}
}
}
if (N % 2 != 0) {
st.insert(make_pair(2, make_pair((N - 1) / 2, (N - 1) / 2 + 1)));
num_sol++;
}
fout << num_sol << '\n';
for (auto it = st.begin(); it != st.end(); ++it) {
auto p = it->second;
fout << p.first << " " << p.second << '\n';
}
}
}