Pagini recente » Cod sursa (job #2344663) | Cod sursa (job #2398445) | Cod sursa (job #1899787) | Cod sursa (job #2116359) | Cod sursa (job #1709975)
#include <set>
#include <map>
#include <stack>
#include <cmath>
#include <queue>
#include <string>
#include <limits>
#include <vector>
#include <bitset>
#include <utility>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>
#define MOD 10001 // daca e nevoie de mod
#define oo 2000000000
#define ooLL (1LL<<60)
#define LSB(x) (x&(-x)) // least significat bit of
#define eps 0.00001
typedef long long ull;
typedef long double ld;
int main()
{
std::ifstream cin("consecutive.in");
std::ofstream cout("consecutive.out");
int test_count;
cin >> test_count;
for (auto test_idx = 0; test_idx < test_count; ++test_idx) {
ull N;
cin >> N;
register int count = 0;
std::vector<std::pair<int, int> > intervals;
for (register int up_idx = N / 2 + 1; up_idx >= 2; --up_idx) {
ull part_sum = up_idx * (up_idx + 1) / 2;
register ull searched_sum = part_sum - N;
register ull sqt1 = sqrt(1 + 8 * searched_sum);
if ((sqt1 * sqt1) == (1 + 8 * searched_sum)) {
intervals.push_back(std::make_pair((-1 + sqt1) / 2, up_idx));
count++;
}
}
cout << count << "\n";
for (uint i = 0; i < intervals.size(); ++i) {
cout << intervals[i].first << " " << intervals[i].second << "\n";
}
}
cin.close();
cout.close();
return 0;
}