Pagini recente » Cod sursa (job #236574) | Cod sursa (job #1720772) | Cod sursa (job #1875844) | Cod sursa (job #2406883) | Cod sursa (job #1709667)
#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();
int contor = 2;
fin>>n;
int an = sqrt(n);
j=n/contor;
//for(i=n/contor + 1;i>=1;i--)
while(j>=1)
{
//fout<<i<<"\n";
for(i=j + contor / 2; i < min( ( j + contor / 2 + 5) , (n / (contor - 1) + (contor - 1)/ 2) );i++)
{
sum = (i * (i + 1) / 2 - n) * 2;
k = (-1 + sqrt(1+4*sum))/2;
if(((i*(i+1)/2 - k*(k+1)/2) == n) && (i>0))
{
if(i != k + 1)
{
a.push_back({k+1,i});
}
}
}
contor++;
j=n/contor;
// if (contor > 4000)break;
if(j < an) break;
//fout<<j<<" "<<contor<<"\n";
}
/* for(i=j;i>=j + 1;i--)
{
sum = (i * (i + 1) / 2 - n) * 2;
k = (-1 + sqrt(1+4*sum))/2;
if(((i*(i+1)/2 - k*(k+1)/2) == n) && (i>0))
{
if(i != k + 1)
{
a.push_back({k+1,i});
}
}
} */
fout<<a.size()<<"\n";
for(i=0;i<a.size();++i)
{
fout<<a[i].first<<" "<<a[i].second<<"\n";
}
}
return 0;
}