Cod sursa(job #1709486)

Utilizator UPB_itslupusUPB Crecana Cristache Jercaianu UPB_itslupus Data 28 mai 2016 12:32:20
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.21 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<math.h>

using namespace std;

ifstream fin("consecutive.in");
ofstream fout("consecutive.out");

long long T, N;

int sol_low[100000];
int sol_high[100000];
long long num_sol;
int sol_found = 0;

int main()
{
    fin >> T;
    for (long long t = 0; t < T; t++) {
        fin >> N;
        num_sol = 0;
        int s = sqrt(N);
        for (int i = 2; i <= s; i++) {
            if (N % i == 0) {
                int div = N / i;
                if (i % 2 != 0) {
                    sol_low[num_sol] = div - (i - 1) / 2;
                    sol_high[num_sol] = div + (i - 1) / 2;
                    num_sol++;
                }
                if (div % 2 != 0 && div != i) {
                    sol_low[num_sol] = i - (div - 1) / 2;
                    sol_high[num_sol] = i + (div - 1) / 2;
                    num_sol++;
                }
            }
        }
        if (N % 2 != 0) {
            sol_low[num_sol] = (N - 1) / 2;
            sol_high[num_sol] = (N - 1) / 2 + 1;
            num_sol++;
        }

        fout << num_sol << '\n';
        for (int i = 0; i < num_sol; i++) {
            fout << sol_low[i] << " " << sol_high[i] << '\n';
        }
    }
}