Cod sursa(job #1771725)

Utilizator radarobertRada Robert Gabriel radarobert Data 5 octombrie 2016 22:18:30
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.12 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

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

    int nr_tests;
    cin >> nr_tests;
    while (nr_tests--)
    {
        vector< pair<int, int> > sol;
        int n;
        cin >> n;
        
        for (int i = 2; i <= n; i++)
        {
            if ((i * (i + 1) / 2) > n)
                break;

            if (i % 2 == 0)
            {
                if (n % i == 0)
                    continue;
                if ((2 * n) % i == 0)
                {
                    int left = (n / i) - (i / 2) + 1;
                    sol.push_back(make_pair(left, left + i - 1));
                }
            }    
            else
            {
                if (n % i == 0)
                {
                    int left = (n / i) - (i / 2);
                    sol.push_back(make_pair(left, left + i - 1));
                }
            }
       }
       cout << sol.size() << '\n';
       for (const auto &it: sol)
           cout << it.first << ' ' << it.second << '\n';
    }

    return 0;
}