Pagini recente » Cod sursa (job #2141744) | Cod sursa (job #109028) | Cod sursa (job #206450) | Cod sursa (job #1062561) | Cod sursa (job #1708993)
#include <stdio.h>
#include <unordered_map>
#include <vector>
#define LMax 60010
using namespace std;
unordered_map<long long, bool> is_sum;
unordered_map<long long, int> inv;
vector<pair<int, int> > sol;
int Tes;
int N;
int main() {
freopen("consecutive.in", "r", stdin);
freopen("consecutive.out", "w", stdout);
scanf("%d", &Tes);
long long sum = 0;
for ( int i = 0; i <= LMax; ++ i ) {
sum += i;
is_sum[sum] = true;
inv[sum] = i;
}
while ( Tes -- ) {
sol.clear();
scanf("%d", &N);
long long sum = 0;
for ( int i = 1; i < N && i <= LMax; ++ i ) {
sum += i;
long long rem = sum - N;
if ( is_sum.find(rem) != is_sum.end() ) {
sol.push_back({inv[rem], i});
}
}
printf("%d\n", sol.size());
for ( int i = sol.size() - 1; i >= 0; -- i )
printf("%d %d\n", sol[i].first + 1, sol[i].second);
}
return 0;
}