Pagini recente » Cod sursa (job #2956299) | Cod sursa (job #2319212) | Cod sursa (job #3277569) | Cod sursa (job #1709891) | Cod sursa (job #1709619)
#include <fstream>
#include <utility>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
vector<pair<int,int> > sol;
long z,nrsol=1,m,k,T,vmax,n,nrh;
pair<int,int> aux;
int main()
{
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
fin>>T;
for(int o=1; o<=T; o++)
{
fin>>n;
z=sqrt(n);
sol.clear();
nrsol=0;
if(n<=1000)
for(int i=3; i<=n/2; i++)
{
if(n%i==0)
{
if(n/i-i/2>0&&i%2==1)
{
sol.push_back(make_pair(n/i-i/2,n/i+i/2));
nrsol++;
}
}
if(i%2==0&&n%i==i/2&&n/i-i/2+1>0)
{
sol.push_back(make_pair(n/i-i/2+1,n/i+i/2));
nrsol++;
}
}
else
for(int i=3; i<=z; i++)
{
if(n%i==0)
{
if(n/i-i/2>0&&i%2==1)
{
sol.push_back(make_pair(n/i-i/2,n/i+i/2));
nrsol++;
}
if(n/(n/i)-(n/i)/2>0&&n/i!=i&&(n/i)%2==1)
{
sol.push_back(make_pair(n/(n/i)-(n/i)/2,n/( n/i)+(n/i)/2));
nrsol++;
}
}
if(i%2==0&&n%i==i/2&&n/i-i/2+1>0)
{
sol.push_back(make_pair(n/i-i/2+1,n/i+i/2));
nrsol++;
}
}
if(n%2==1&&n/2>0)
{
nrsol++;
}
fout<<nrsol<<'\n';
if(n%2==1&&n/2>0)
{
fout<<n/2<<' '<<n/2+1<<'\n';
}
for(int i=0; i<sol.size(); i++)
{
fout<<sol[i].first<<' '<<sol[i].second<<'\n';
}
}
return 0;
}