Pagini recente » Cod sursa (job #1619456) | Cod sursa (job #989808) | Cod sursa (job #232477) | Cod sursa (job #2903247) | Cod sursa (job #1709016)
#include<fstream>
using namespace std;
int t, n, i, x, nr, st, dr, mid;
pair<int, int> sol[30000];
long long y;
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
int main(){
fin>> t;
for(; t; t--){
fin>> n;
nr = 0;
st = 1;
dr = n;
while(st <= dr){
mid = (st + dr) / 2;
y = mid * 1LL * (mid + 1) / 2;
if(y > n){
dr = mid - 1;
}
else{
st = mid + 1;
}
}
for(i = 2; i <= dr; i++){
if(i % 2 == 0){
x = n - i / 2 * (i - 1);
}
else{
x = n - (i - 1) / 2 * i;
}
if(x <= 0){
break;
}
if(x % i == 0){
nr++;
sol[nr].first = x / i;
sol[nr].second = sol[nr].first + i - 1;
}
}
fout<< nr <<"\n";
for(i = 1; i <= nr; i++){
fout<< sol[i].first <<" "<< sol[i].second <<"\n";
}
}
}