Cod sursa(job #2259482)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 13 octombrie 2018 13:00:42
Problema Consecutive Scor 100
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>

using namespace std;

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

long long t;
vector<pair<long long int,long long int> >v;
long long a,b;

inline bool e_bine(long long x,long long n){
    if(n % (x + 1) == 0 && (n / (x + 1) - x) % 2 == 0){
        a = (n / (x + 1) - x) / 2;
        b = a + x;
        return true;
    }
    return false;
}

int main()
{
    ios::sync_with_stdio(false);
    in.tie(0);
    out.tie(0);
    in>>t;
    long long nr;
    for(int i = 0; i < t; i++){
        in>>nr;
        v.clear();
        long long x,pos;
        for(x = 1; x * x <= 2 * nr; x ++){
            if(e_bine(x,2 * nr) && a && b)
                v.push_back(make_pair(a,b));
        }
        out<<v.size()<<"\n";
        for(int i = 0; i < v.size(); i++)
            out<<v[i].first<<" "<<v[i].second<<"\n";
    }

    return 0;
}