Pagini recente » Cod sursa (job #2209871) | Cod sursa (job #2142679) | Cod sursa (job #2001741) | Cod sursa (job #2570840) | Cod sursa (job #2157869)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("consecutive.in");
ofstream out("consecutive.out");
long long t;
vector<pair<int,int> >v;
long long a,b;
long long ok(long long x){
long long pas = 1<<30, r = 0;
while(pas){
if((r+pas)*(r+pas+1) <= x)
r += pas;
pas /= 2;
}
if(r*(r+1) == x)
return r;
return 0;
}
void rez(long long n){
v.clear();
for(a = 1; a <= n/2; a ++){
b = 2*n + a*(a-1);
if(ok(b)){
b = ok(b);
v.push_back(make_pair(a,b));
}
}
reverse(v.begin(),v.end());
out<<v.size()<<"\n";
for(int i = 0; i < v.size(); i++)
out<<v[i].first<<" "<<v[i].second<<"\n";
}
int main()
{
in>>t;
long long nr;
for(int i = 0; i < t; i++){
in>>nr;
rez(nr);
}
return 0;
}