Pagini recente » Cod sursa (job #830070) | Cod sursa (job #161010) | Cod sursa (job #989056) | Cod sursa (job #2632785) | Cod sursa (job #2247277)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
vector<int> divs;
int main()
{
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
int t;
fin >> t;
while(t){
int n;
fin >> n;
int d = 2, exp, ans = 1, cp = n;
while(d * d <= cp){
exp = 0;
if(cp % d == 0)
divs.push_back(d);
while(cp % d == 0){
cp /= d;
exp++;
}
ans *= exp + 1;
d++;
}
if(cp > 1)
divs.push_back(cp);
if(n % 2 == 1)
ans++;
fout << ans << "\n";
if(n % 2 == 1)
fout << n / 2 << " " << n / 2 + 1 << "\n";
for(int i = 0; i < int(divs.size()); ++i){
int st = n / divs[i] - 1, dr = n / divs[i] + 1;
while((dr - st + 1) * (dr + st) / 2 < n){
dr++;
st--;
}
if((dr - st + 1) * (dr + st) / 2 > n){
dr--;
st++;
}
fout << st << " " << dr << "\n";
}
t--;
divs.clear();
}
return 0;
}