Pagini recente » Cod sursa (job #1946072) | Cod sursa (job #2978448) | Cod sursa (job #3152334) | Cod sursa (job #3207032) | Cod sursa (job #1709950)
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class s {
public:
long long start, end;
};
bool comp(s s1, s s2)
{
return s1.end - s1.start < s2.end - s2.start;
}
int main()
{
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
long long n, x,i;
s S;
vector<s> v;
fin >> n;
for (i = 0; i < n; i++)
{
fin >> x;
/*int a =1, b = (-1+sqrt(1+8*x))/2;
int suma = (b * (b + 1)) / 2;
while (b <= (x+1) / 2)
{
if ((2 * x) % (a + b) != 0 && (a+b) * (b-a+1) != 2*x)
{
a++;
}
else
{
S.start = a;
S.end = b;
v.push_back(S);
suma = suma - a;
a++;
b++;
}
}*/
long long maxLength = floor(sqrt(2 * x));
for (int j = 2; j <= maxLength; ++j) {
if ((x - (j * (j - 1) / 2)) < 0) {
continue;
}
if ((x - (j * (j - 1) / 2)) % j == 0) {
S.start = (x - (j * (j - 1) / 2)) / j;
S.end = S.start + j - 1;
v.push_back(S);
}
}
fout << v.size() << endl;
for (int j = 0; j < v.size(); j++)
{
fout << v[j].start << " " << v[j].end << endl;
}
v.clear();
}
}