Cod sursa(job #1709370)

Utilizator UCV_Buleandra_Teodorescu_BadeaUCV TEODORESCU BADEA CIUREZ UCV_Buleandra_Teodorescu_Badea Data 28 mai 2016 11:58:47
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.02 kb
#include <iostream>
#include <cstdio>
#include <cmath>
#define Nmax 300000
#define MOD 19997
using namespace std;

struct interval {
    int x;
    int 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 m = sqrt(N);
        long long N2 = 2 * N;
        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;

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


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

        }

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

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

    return 0;
}