Cod sursa(job #2247277)

Utilizator andreisontea01Andrei Sontea andreisontea01 Data 28 septembrie 2018 12:11:06
Problema Consecutive Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.18 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

vector<int> divs;

int main()
{
    ifstream fin("consecutive.in");
    ofstream fout("consecutive.out");
    int t;
    fin >> t;
    while(t){
        int n;
        fin >> n;
        int d = 2, exp, ans = 1, cp = n;
        while(d * d <= cp){
            exp = 0;
            if(cp % d == 0)
                divs.push_back(d);
            while(cp % d == 0){
                cp /= d;
                exp++;
            }
            ans *= exp + 1;
            d++;
        }
        if(cp > 1)
            divs.push_back(cp);
        if(n % 2 == 1)
            ans++;
        fout << ans << "\n";
        if(n % 2 == 1)
            fout << n / 2 << " " << n / 2 + 1 << "\n";
        for(int i = 0; i < int(divs.size()); ++i){
            int st = n / divs[i] - 1, dr = n / divs[i] + 1;
            while((dr - st + 1) * (dr + st) / 2 < n){
                dr++;
                st--;
            }
            if((dr - st + 1) * (dr + st) / 2 > n){
                dr--;
                st++;
            }
            fout << st << " " << dr << "\n";
        }
        t--;
        divs.clear();
    }
    return 0;
}