Cod sursa(job #1911962)

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

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) {
            long long nr = (long long)i * (i - 1) + 1;
            int limit = i - 1;
            int j;
            for (j = 0; j < n - 1; ++j) {
                nr += r;
                int g = sqrt(nr - 1) + 1;

                long long first = (long long)g * (g - 1) + 1;
                long long last = (long long)first + g - 1;

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

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

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

    return 0;
}