Pagini recente » Cod sursa (job #2035926) | Cod sursa (job #1749528) | Cod sursa (job #474880) | Cod sursa (job #2184168) | Cod sursa (job #1708950)
# include <bits/stdc++.h>
using namespace std;
# define fi cin
# define fo cout
# define x first
# define y second
# define ll long long
# define db long double
# define scn(x) scanf("%I64d",&x)
# define scan(x) scanf("%d",&x)
# define print(x) printf("%d ",x)
# define prnt(x) printf("%I64d ",x);
# define eol printf("\n")
# define IOS ios_base :: sync_with_stdio(0)
# define pe "Possible"
# define ie "Impossible"
# define halt(...) {fo << (__VA_ARGS__) << '\n';exit(0);}
# define rep(n) for (int qwerty = 1;qwerty <= n;++qwerty)
# define pp(n) cerr << #n << " = " << n << '\n'
# define ppp(v) for (auto it : v) cerr << it << ' ';cerr << '\n'
const int mod = 1e9 + 7;
map < int , int > s;
void sol(int x,int y,int n)
{
if (!(abs(x)&1)) return;
int l = x - 1;
int k = y - l/2;
if (l < 0)
{
int p = 1,u = 2e9;
l = 0;
while (p <= u)
{
int m = (p + u) / 2;
if (1LL * (k + m) * (k + m + 1)/2 - 1LL * k * (k - 1) / 2 <= n) l = m,p = m + 1;
else u = m - 1;
}
}
if (l > 0) s[k] = l + 1;
}
int main(void)
{
int t;
ifstream fi("consecutive.in");
ofstream fo("consecutive.out");
fi>>t;
while (t --)
{
s.clear();
int n;
fi>>n;
for (int i = 1;1ll * i * i <= n;++i)
{
sol(i,n/i,n);
sol(n/i,i,n);
sol(-i,-n/i,n);
sol(-n/i,-i,n);
}
vector < pair < int , int > > ans;
for (auto it : s) if (it.x > 0 && (1ll * (it.x + it.y) * (it.x + it.y - 1) - 1ll * (it.x - 1) * it.x) == n + n) ans.push_back({it.x,it.y + it.x - 1});
sort(ans.begin(),ans.end(),[](pair < int , int > a,pair < int , int > b) {return (a.y - a.x) < (b.y - b.x);});
fo << (ans.size()) << '\n';
for (auto it : ans) fo << it.x << ' ' << it.y << '\n';
}
return 0;
}