Pagini recente » Cod sursa (job #745421) | Cod sursa (job #697910) | Cod sursa (job #2904275) | Cod sursa (job #519701) | Cod sursa (job #1710094)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#include <cmath>
#include <algorithm>
#define NMAX 1000005
using namespace std;
ifstream in ( "consecutive.in" );
ofstream out ( "consecutive.out" );
int T , n ;
pair < int , int > v[NMAX];
int main ( void )
{
int i,j;
in >> T;
for ( i = 1 ; i <= T ; ++i ){
in >> n ;
int contor = 0 ;
if ( n % 2 == 1 && n > 1 )
{
++contor;
v[contor].first = n/2;
v[contor].second = n/2 + 1 ;
}
for ( j = 3 ; j <= n/2 ; ++j ) {
if ( ( j %2 == 1 && n % j == 0 ) ){
int a = ( 2 * n / j + 1 - j ) / 2 ;
if( ( a + ( a+j-1) ) *j == 2 * n ){
if ( a > 0 ){
++contor;
v[contor].first = a ;
v[contor].second = a + j - 1 ;
}
}
}
else if ( ( j % 2 == 0 && n %(j/2) == 0) ) {
int a = ( 2 * n / j + 1 - j ) / 2 ;
if( ( a + ( a+j-1) ) *j == 2 * n ) {
if ( a > 0 ){
++contor;
v[contor].first = a ;
v[contor].second = a + j - 1 ;
}
}
}
}
out << contor << "\n";
for ( j = 1; j <= contor ; ++j )
out << v[j].first << " " << v[j].second << "\n";
}
return 0 ;
}