Pagini recente » Cod sursa (job #2652121) | Cod sursa (job #2404918) | Cod sursa (job #1253164) | Cod sursa (job #1920519) | Cod sursa (job #1711139)
#include <bits/stdc++.h>
using namespace std;
long long T , n , k , i , up , down;
vector < long long > lg;
vector < pair < long long , long long > > solution;
int main()
{
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
for (fin >> T ; T ; --T)
{
fin >> n;
k = 2 * n;
for (i = 1 ; i * i <= k ; ++i)
if (k % i == 0)
{
if (2 <= i)
lg.push_back(i);
}
for (--i ; i ; --i)
if (k % i == 0)
{
if (i * i == k) continue;
lg.push_back(k / i);
}
for (i = 0 ; i < lg.size() ; ++i)
{
up = 2 * n + lg[i] * (lg[i] - 1);
down = 2 * lg[i];
if (up % down == 0)
{
k = up / down;
if (lg[i] <= k)
solution.push_back(make_pair(k - lg[i] + 1 , k));
}
}
fout << solution.size() << '\n';
for (i = 0 ; i < solution.size() ; ++i)
fout << solution[i].first << " " << solution[i].second << '\n';
solution.clear() , lg.clear();
}
return 0;
}