Cod sursa(job #1708991)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 28 mai 2016 10:28:12
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.98 kb
#include<fstream>
using namespace std;
int t, n, i, x, nr, st, dr, mid;
pair<int, int> sol[30000];
long long y;
ifstream fin("consecutive.in");
ofstream fout("consecutive.out");
int main(){
    fin>> t;
    for(; t; t--){
        fin>> n;
        nr = 0;
        st = 1;
        dr = n;
        while(st <= dr){
            mid = (st + dr) / 2;
            y = mid * 1LL * (mid - 1) / 2;
            if(y > n){
                dr = mid - 1;
            }
            else{
                st = mid + 1;
            }
        }
        for(i = 2; i <= dr; i++){
            x = n - i * (i - 1) / 2;
            if(x < 0){
                break;
            }
            if(x % i == 0){
                nr++;
                sol[nr].first = x / i;
                sol[nr].second = sol[nr].first + i - 1;
            }
        }
        fout<< nr <<"\n";
        for(i = 1; i <= nr; i++){
            fout<< sol[i].first <<" "<< sol[i].second <<"\n";
        }
    }
}