Pagini recente » Cod sursa (job #2780223) | Cod sursa (job #2429779) | Cod sursa (job #991113) | Cod sursa (job #1914873) | Cod sursa (job #1708996)
#include <stdio.h>
#include <vector>
using namespace std;
int t, n, res;
vector<pair<int, int> > sol;
int cbin(int x){
int s = x, d = n / 2 + 1;
while(s <= d){
int m = s + (d - s) / 2;
int r = (x + m) * (m - x + 1) / 2;
if(r == n)
return m;
if(r < n)
s = m + 1;
else
d = m - 1;
}
return -1;
}
int main(){
freopen("consecutive.in", "r", stdin);
freopen("consecutive.out", "w", stdout);
scanf("%d", &t);
for(int i = 0; i < t; ++i){
sol.clear();
scanf("%d", &n);
for(int j = n / 2; j > 0; --j){
res = cbin(j);
if(res != -1)
sol.push_back(make_pair(j, res));
}
printf("%d\n", sol.size());
for(int i = 0; i < sol.size(); ++i)
printf("%d %d\n", sol[i].first, sol[i].second);
}
return 0;
}