Cod sursa(job #1709063)

Utilizator Spiromanii_MessiUNIBUCThrowTerror Spiromanii_Messi Data 28 mai 2016 10:45:28
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )

vector < pair < long long , long long > > sol ;

int main()
{
    ios :: sync_with_stdio ( false ) ;

    freopen( "consecutive.in" , "r" , stdin ) ;
    freopen( "consecutive.out" , "w" , stdout ) ;
    int t ;
    cin >> t ;
    while ( t -- ) {
        sol.clear ( ) ;
        long long N ;
        cin >> N ;
        long long l = 2LL ;
        while ( l * ( l - 1 ) / 2 <= N ) {
            long long aux = l * ( l - 1 ) ;
            aux >>= 1 ;
            long long rest = N - aux ;
            if ( rest % l or rest == 0 ) {
                ++ l ;
                continue ;
            }
            sol.pb ( mp ( rest / l , rest / l + l - 1 ) ) ;
            ++ l ;
        }
        cout << sol.size ( ) << '\n' ;
        for ( auto x : sol ) {
            cout << x.first << ' ' << x.second << '\n' ;
        }
    }
    return 0 ;
}