Cod sursa(job #1854569)

Utilizator SpiristulTeribilStefan Vilcu SpiristulTeribil Data 22 ianuarie 2017 21:03:31
Problema Consecutive Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.9 kb
#include <fstream>
#include <vector>
#include <cmath>
 
using namespace std ;
 
ifstream cin ( "consecutive.in" ) ;
ofstream cout ("consecutive.out") ;
 
const int MAX = 1e6 + 14 ;
 
vector < pair < int , int > > sol ;
 
int main ( ) 
{
    int t ; 
    cin >> t ; 
    while ( t -- ) {
        sol.clear() ;
        int n ; 
        cin >> n ; 
        int len = 2 ; 
        while ( 1LL * len * (len + 1) / 2 <= n ) {
            int aux = 1LL * len * (len + 1) / 2 ;
            int rest = n - aux ; 
            if ( rest % len == 0 ) {
                sol.push_back ( make_pair ( rest / len + 1 , rest / len + len ) ) ;
                //cout << "am bagat " << rest/len + 1 << " pentru lungimea " << len << endl ;
            }
            len += 1 ; 
        }
        cout << sol.size() << '\n' ; 
        for ( auto x : sol ) {
            cout << x.first << ' ' << x.second << '\n' ;
        }
    }
    return 0 ;
}