Pagini recente » Cod sursa (job #881105) | Cod sursa (job #1072162) | Cod sursa (job #837387) | Cod sursa (job #186568) | Cod sursa (job #1709486)
#include<iostream>
#include<fstream>
#include<vector>
#include<math.h>
using namespace std;
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
long long T, N;
int sol_low[100000];
int sol_high[100000];
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);
for (int i = 2; i <= s; i++) {
if (N % i == 0) {
int div = N / i;
if (i % 2 != 0) {
sol_low[num_sol] = div - (i - 1) / 2;
sol_high[num_sol] = div + (i - 1) / 2;
num_sol++;
}
if (div % 2 != 0 && div != i) {
sol_low[num_sol] = i - (div - 1) / 2;
sol_high[num_sol] = i + (div - 1) / 2;
num_sol++;
}
}
}
if (N % 2 != 0) {
sol_low[num_sol] = (N - 1) / 2;
sol_high[num_sol] = (N - 1) / 2 + 1;
num_sol++;
}
fout << num_sol << '\n';
for (int i = 0; i < num_sol; i++) {
fout << sol_low[i] << " " << sol_high[i] << '\n';
}
}
}