Cod sursa(job #1709040)

Utilizator oldscotchUPB Old Scotch oldscotch Data 28 mai 2016 10:40:20
Problema Consecutive Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.15 kb
#include <cstdio>

using namespace std;
int T,N;
int rez1[(1<<17)+1], rez2[(1<<17)+1];
void solve()
{
    int val =0;
    scanf ("%d ", &N);

    for (int i=2; ; i++)
    {
        if ((long long) i* (i+1)/2>N){
            break;}
        if (i%2)
            {
                if (N%i==0)
                    {
//                        printf("%d %d\n", N/i - i/2, N/i+i/2);
                        val++;
                        rez1[val]=N/i-i/2;
                        rez2[val]=N/i+i/2;
                    }
            }
            else
            {
                if ( N-( (N/i) *i)==i/2)
                {
                        val++;
                        rez1[val]=N/i-i/2+1;
                        rez2[val]=N/i+i/2;
   //                 printf ("%d %d\n", N/i-i/2+1, N/i+i/2);
                }
            }
    }
    printf("%d\n",val);
    for (int i=1; i<=val; i++)
        printf("%d %d\n", rez1[i], rez2[i]);
}
int main()
{
    freopen("consecutive.in", "r", stdin);

    freopen("consecutive.out", "w", stdout);
    scanf("%d", &T);
    for (int i=0; i<T;i++)
        solve();
    return 0;
}