Cod sursa(job #1709027)

Utilizator CornelPanicUPB CornelPanic CornelPanic Data 28 mai 2016 10:37:52
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.95 kb
#include <iostream>
#include <stdio.h>
#include <cmath>

#define NMAX 350000
#define eps 0.00001

using namespace std;

int N, k, sn, m, L, i, j, numar, T, x;
int lungime[NMAX], stanga[NMAX];
double n;

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

    scanf("%d", &T);

    while(T--) {
        k = 0; numar = 0;
        scanf("%d", &N);

        sn = sqrt(2 * N);
        for(L = 2; L <= sn; ++ L) {
            n = (double) N / L + (double) L / 2 + (double) 1 / 2;
            if(abs(n - int(n)) <= eps) {
                x = (int) ((double) N / L - (double) (L - 1) / 2);
                if(x > 0) {
                    stanga[k++] = x;
                    lungime[k - 1] = L;
                    numar ++;
                }
            }
        }
        printf("%d\n", numar);

        for(i = 0; i < k; ++i) {
            printf("%d %d\n", stanga[i], stanga[i] + lungime[i] - 1);
        }
    }

    return 0;
}