Cod sursa(job #1709407)

Utilizator UCV_Buleandra_Teodorescu_BadeaUCV TEODORESCU BADEA CIUREZ UCV_Buleandra_Teodorescu_Badea Data 28 mai 2016 12:07:02
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.06 kb
#include <iostream>
#include <cstdio>
#include <cmath>
#define Nmax 1000000
#define MOD 19997
using namespace std;

struct interval {
    long long x;
    long long y;
} v[Nmax];

int T;
long long N, sol;


int main() {
    freopen("consecutive.in", "r", stdin);
    freopen("consecutive.out", "w", stdout);

    scanf("%d", &T);

    while(T--) {
        scanf("%lld", &N);

        long long N2 = 2 * N;
        long long m = sqrt(N2);
        sol = 0;
        for(int k = 2; k <= m; ++k) {
            if(N2 % k == 0) {
                long long S = N2 / k;
                long long p2 = (S - k + 1);

                if(k > S) break;

                if(p2 % 2) continue;

                long long p = p2 / 2;
                long long q = p + k -1;


                sol++;
                v[sol].x = p;
                v[sol].y = q;
            }

        }

        printf("%lld\n", sol);

        for(int i =  1; i <= sol; ++i) {
            printf("%lld %lld\n", v[i].x, v[i].y);
        }
    }

    return 0;
}