Cod sursa(job #1709125)

Utilizator SegfaultTamersUPB SegFaultTamers SegfaultTamers Data 28 mai 2016 10:59:17
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

int main() {
    ifstream f("consecutive.in");
    ofstream g("consecutive.out");

    long long t, n;

    f >> t;
    for (long long tst = 0; tst < t; ++tst) {
        queue<pair<long long, long long> > q;
        f >> n;
        for (long long k = 2; ; ++k) {
            long long d = n / k;
            if (k % 2 == 1) {
                if (d - k / 2 <= 0) {
                    break;
                }
                if (n % k == 0) {
                    q.push(make_pair(d - k / 2, d + k / 2));
                }
            } else {
                if (d - k / 2 + 1 <= 0) {
                    break;
                }
                if (n % (2 * d + 1) == 0) {
                    q.push(make_pair(d - k / 2 + 1, d + k / 2));
                }
            }
        }

        g << q.size() << '\n';
        while (!q.empty()) {
            long a, b;
            a = q.front().first;
            b = q.front().second;
            g << a << ' ' << b  << '\n';
            q.pop();
        }
    }

    return 0;
}