Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3359610)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
struct Solutie {
long long primul;
long long ultimul;
};
void rezolvaTest(long long N, ofstream& g) {
long long doiN = 2 * N;
vector<Solutie> solutii;
for (long long k = 2; k * k < doiN; ++k) {
if (doiN % k == 0) {
long long f = doiN / k;
if ((f - k + 1) % 2 == 0) {
long long a = (f - k + 1) / 2;
long long b = a + k - 1;
solutii.push_back({a, b});
}
}
}
g << solutii.size() << "\n";
for (const auto& sol : solutii) {
g << sol.primul << " " << sol.ultimul << "\n";
}
}
int main() {
ifstream f("consecutive.in");
ofstream g("consecutive.out");
int T;
if (f >> T) {
while (T--) {
long long N;
f >> N;
rezolvaTest(N, g);
}
}
f.close();
g.close();
return 0;
}