Cod sursa(job #1709143)

Utilizator Furia_PolitehniciiUPT Statescu Stana Mihut Furia_Politehnicii Data 28 mai 2016 11:01:46
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.86 kb
#include <iostream>
#include <stdio.h>
#include <math.h>

using namespace std;



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

    int T;

    scanf("%d", &T);

    while(T--) {

        long long x, k, n;
        scanf("%lld", &x);
        long long len;
        long long cnt = 0;
	
	for (len = 2; len * (len + 1) / 2 <= x; len++);

        for (k = 2; k < len; k++) {
            long long nr = 2 * x + k * k - k;
            long long num = 2 * k;

            if (nr % num == 0)
                cnt++;
        }

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

        for (k = 2; k < len; k++) {
            long long nr = 2 * x + k * k - k;
            long long num = 2 * k;

            if (nr % num == 0) {
                n = nr / num;
                printf("%lld %lld\n", n-k+1, n);
            }
        }

    }


    return 0;
}