Pagini recente » Cod sursa (job #2451357) | Cod sursa (job #820863) | Cod sursa (job #1797419) | Cod sursa (job #2319207) | Cod sursa (job #1709182)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
struct StFi
{
long long x, y;
};
long long summ (long long start, long long finish)
{
long long SF = ((finish) * (finish + 1)) / 2;
long long SS = ((start - 1) * (start)) / 2;
return (SF - SS);
}
vector <StFi> sol;
int main()
{
ifstream f ("consecutive.in");
ofstream g ("consecutive.out");
long long i, T, N, midNb, toLR, stg, dr, Scr, nrSOL = 0;
StFi DePus;
f >> T;
while (T --)
{
f >> N;
for (i = 2; (i * (i + 1)) / 2 <= N; ++ i)
{
midNb = N / i;
toLR = i / 2;
if (i % 2 == 0)
{
stg = midNb - toLR + 1;
dr = midNb + toLR;
Scr = summ (stg, dr);
if (Scr == N)
{
DePus . x = stg;
DePus . y = dr;
sol . push_back (DePus);
++ nrSOL;
}
stg --;
dr --;
Scr = summ (stg, dr);
if (Scr == N)
{
DePus . x = stg;
DePus . y = dr;
sol . push_back (DePus);
++ nrSOL;
}
}
else
{
stg = midNb - toLR;
dr = midNb + toLR;
Scr = summ (stg, dr);
if (Scr == N)
{
DePus . x = stg;
DePus . y = dr;
sol . push_back (DePus);
++ nrSOL;
}
}
}
g << nrSOL << "\n";
for (i = 0; i < sol . size (); ++ i)
{
g << sol [i]. x << ' ' << sol [i] . y << "\n";
}
sol.clear ();
nrSOL = 0;
}
return 0;
}