Cod sursa(job #1774397)

Utilizator R4DIC4LTeodorescu Oana Maria R4DIC4L Data 8 octombrie 2016 21:34:12
Problema Consecutive Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.07 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;
}