Cod sursa(job #1911886)

Utilizator hevelebalazshevele balazs hevelebalazs Data 7 martie 2017 22:07:56
Problema Progresie Scor 0
Compilator c Status done
Runda Arhiva ICPC Marime 0.99 kb
#include <stdio.h>

int group(int x) {
    int i = 0;
    while (x > i * i) i++;
    return i;
}

int main() {
    freopen("progresie.in", "r", stdin);
    freopen("progresie.out", "w", stdout);

    int t;
    scanf("%i", &t);

    int n, r;

    while (t--) {
        scanf("%i%i", &n, &r);

        int i;
        for (i = 1; 1; ++i) {
            int nr = i * i - i + 1;
            int limit = i - 1;
            int j;
            for (j = 0; j < n - 1; ++j) {
                nr += r;
                int g = group(nr);

                int first = g * g - g + 1;
                int last = g * g;

                if (limit < first - nr) {
                    break;
                }

                if (nr < first) nr = first;

                if (limit > last - nr) limit = last - nr;
            }

            if (j == n - 1) {
                printf("%i\n", nr - (n - 1) * r);
                break;
            }
        }
    }

    return 0;
}