Cod sursa(job #1711139)

Utilizator ZenusTudor Costin Razvan Zenus Data 30 mai 2016 17:50:36
Problema Consecutive Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

long long T , n , k , i , up , down;
vector < long long > lg;
vector < pair < long long , long long > > solution;

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

for (fin >> T ; T ; --T)
{
    fin >> n;

    k = 2 * n;
    for (i = 1 ; i * i <= k ; ++i)
    if (k % i == 0)
    {
        if (2 <= i)
        lg.push_back(i);
    }

    for (--i ; i ; --i)
    if (k % i == 0)
    {
        if (i * i == k) continue;
        lg.push_back(k / i);
    }

    for (i = 0 ; i < lg.size() ; ++i)
    {
        up = 2 * n + lg[i] * (lg[i] - 1);
        down = 2 * lg[i];

        if (up % down == 0)
        {
            k = up / down;

            if (lg[i] <= k)
            solution.push_back(make_pair(k - lg[i] + 1 , k));
        }
    }

    fout << solution.size() << '\n';
    for (i = 0 ; i < solution.size() ; ++i)
    fout << solution[i].first << " " << solution[i].second << '\n';

    solution.clear() , lg.clear();
}

return 0;
}