Cod sursa(job #1097567)

Utilizator ericptsStavarache Petru Eric ericpts Data 3 februarie 2014 16:46:22
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.87 kb
#include <fstream>
#include <cmath>

using namespace std;

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

int n,r;

inline long long fst(int x){
    return 1LL * x * (x - 1) + 1;
}

inline long long lst(int x){
    return 1LL * x * x;
}

long long solve(){
    in >> n >> r;
    int k;
    long long lo,hi;
    long long st;
    long long nlo, nhi;
    for(k = 1 ; k ; ++k){
        lo = fst(k);
        hi = lst(k);

        for(int i = 1 ; lo <= hi && i < n ; ++i){
            lo += r, hi += r;

            st = sqrt(lo - 1) + 1;

            nlo = fst(st);
            nhi = lst(st);

            lo = max(lo, nlo);
            hi = min(hi, nhi);
        }
        if(lo <= hi)
            return lo - (n - 1) * r;
    }
}

int main(){
    int T;
    in >> T;
    while(T--)
        out << solve() << "\n";
    return 0;
}