Cod sursa(job #1709026)

Utilizator forsakenAweUNIBUC Suditu Cornoiu Chihai forsakenAwe Data 28 mai 2016 10:37:32
Problema Consecutive Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

vector<pair<int,int> > v;
int main()
{

    freopen("consecutive.in","r",stdin);
    freopen("consecutive.out","w",stdout);

    int T;
     scanf("%d", &T);
    while(T--)
    {
        int n;
        scanf("%d", &n);

        v.clear();
        int diff;
        long long nn  = 2LL * n;

        long long lim = (int)sqrt(nn) + 1; lim = max(lim, nn);
        for(diff = 1; diff <= lim; diff++)
        {
                int tmp = diff + 1;
                if (nn % tmp != 0) continue;
                tmp = nn / tmp;

                if ((tmp + diff) & 1) continue;
                long long b = tmp + diff;
                b /= 2;
                long long a = tmp - b;
                if (a <= 0) continue;

                v.push_back(make_pair(a,b));
        }
        int ans = v.size();
        printf("%d\n", ans);
        for(int i = 0; i < ans; i++) {
            printf("%d %d\n", v[i].first , v[i].second);
        }
    }





    return 0;
}