Cod sursa(job #1713367)

Utilizator akaprosAna Kapros akapros Data 5 iunie 2016 13:51:16
Problema Consecutive Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.82 kb
#include <bits/stdc++.h>
#define ll long long
#define Nmax 200004
using namespace std;
int t;
ll n, p, k, sol;
struct Sol
{
    ll x;
    ll y;
} v[Nmax];

void read()
{
    scanf("%lld", &n);
}
void solve()
{
    ll i;
    for(i = 2; i * (i + 1) <= 2 * n; ++ i)
        if((n - ((i - 1) * i / 2)) % i == 0)
        {
            v[++ sol].x = (n - ((i - 1) * i / 2)) / i;
            v[sol].y = i;
        }
}
void write()
{
    int i;
    printf("%d\n", sol);

    for (i = 1; i <= sol ; ++i)
        printf("%lld %lld\n", v[i].x, v[i].x + v[i].y - 1);
    sol = 0;
}
int main()
{
    freopen("consecutive.in", "r", stdin);
    freopen("consecutive.out", "w", stdout);
    scanf("%d", &t);
    while (t --)
    {
        read();
        solve();
        write();
    }
    return 0;
}