Cod sursa(job #1070234)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 31 decembrie 2013 13:53:45
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 2.05 kb
/*#include <fstream>

using namespace std;

ifstream fin("progresie.in");
ofstream fout("progresie.out");

struct coord {
    int in, sf;
};

coord v[10001];
int n, r, i, elem, j, k, l, p, t, q = 1, rez;

int main() {
    fin >> n;

    v[1].in = v[1].sf = 1;

    for(i = 1;i <= n;i++) {
        fin >> elem >> r;

        j = 1;k = 0;p = 0;

        while(k != 1) {
            l = j;
            p = 0;

            while(p < elem && k == 0) {
                for(t = 1;t <= q;t++) {
                    if(l >= v[t].in && l <= v[t].sf) break;
                    else if(l < v[t].in) {k = 1;break;}
                }

                if(t == q + 1) {
                    while(k == 0) {
                        v[1 + q].in = v[q].sf + q + 1;
                        q++;
                        v[q].sf = v[q].in + q - 1;
                        if(l >= v[q].in && l <= v[q].sf) k = 2;
                        else if(l < v[q].in) k = 1;
                    }
                    if(k == 2) k = 0;
                }
                p++;
                l += r;
            }

            k = (k + 1) % 2;
            if(k == 1) rez = j;
            j++;
        }

        fout << rez << '\n';
    }

    fin.close();
    fout.close();

    return 0;
}
*/

#include<cstdio>
#include<cmath>

bool ok(long long x){
    long long sq = sqrt(x);
    return x == sq*sq || x > sq*(sq+1);
}

int main(void){
    freopen("progresie.in", "r", stdin);
#ifdef INFOARENA
    freopen("progresie.out", "w", stdout);
#endif

    int t;
    scanf("%d", &t);
    while(t--){
        int n, r;
        bool k = 0;
        long long x;
        scanf("%d%d", &n, &r);
        n--;
        for(long long i=1;!k;i++){
            x = i*(i-1) + 1;
            k = 1;
            for(int j = 0;j<n;j++){
                x += r;
                if(!ok(x)){
                    k = 0;
                    break;
                }
            }
        }

        printf("%lld\n", x - 1LL * r*n);
    }

    return 0;
}