Cod sursa(job #1709384)

Utilizator UPB_itslupusUPB Crecana Cristache Jercaianu UPB_itslupus Data 28 mai 2016 12:02:32
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.16 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;
        for (long long i = 1; i < N/2 + 1; i++) {
            if (sol_found) {
                sol_found = 0;
                continue;
            }
            long long c = 2 * N + i * i - i;
            long long aux = 1 + 4 * c;
            long long s = sqrt(aux);
            if (s * s == aux) {
                if ((-1 + s) % 2 != 0)
                    continue;
                long long b = (-1 + s) / 2;
                //if (b > i && b <= N/2 + 1) {
                    sol_high[num_sol] = b; 
                    sol_low[num_sol] = i;
                    num_sol++;
                    sol_found = 1;
                //}
            }
        }

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