Pagini recente » Cod sursa (job #752544) | Cod sursa (job #829157) | Cod sursa (job #2455602) | Cod sursa (job #2360398) | Cod sursa (job #1709301)
#include <fstream>
#include <cmath>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
long long n,m,i,j,t,e,sum,k;
vector< pair<long, long> > a;
int main()
{
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
fin>>t;
for(e=1;e<=t;e++)
{
a.clear();
fin>>n;
for(i=n/2 + 1;i>=1;i--)
{
//fout<<i<<"\n";
sum = (i * (i + 1) / 2 - n) * 2;
k = (-1 + sqrt(1+4*sum))/2;
if((i*(i+1)/2 - k*(k+1)/2) == n)
{
if(i != k + 1)
{
if(a.size() > 0 && a[a.size()-1].first != k + 1 && a[a.size()-1].second != i)
{
a.push_back({k+1,i});
if(i > n/(i-k+1)+(i-k))
{
i = n/(i-k+1)+(i-k);
}
}
else if(a.size() == 0)
{
a.push_back({k+1,i});
if(i > n/(i-k+1)+(i-k))
{
i = n/(i-k+1)+(i-k);
}
}
}
}
}
fout<<a.size()<<"\n";
for(i=0;i<a.size();++i)
{
fout<<a[i].first<<" "<<a[i].second<<"\n";
}
}
return 0;
}