Cod sursa(job #2219995)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 10 iulie 2018 12:21:01
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.81 kb
#include <fstream>
#include <math.h>
#define LL long long
using namespace std;
fstream f1("progresie.in", ios::in);
fstream f2("progresie.out", ios::out);
int t;
long long n, r;
bool apsir(long long x)
{
    long long rad=sqrt(x);
    if(rad*rad!=x) rad++;
    return (rad*(rad-1LL)+1LL<=x);
}
long long v(long long n, long long r)
{
    int ok;
    long long k, j, i;
    ///k max 10^4, n max 30
    for(k=1LL; k*(k-1LL)+1LL<=(n-1LL)*r;k++) ///incepi din primele val blocuri
    {
        i=k*(k-1LL)+1LL;
        ok=1;
        for(j=1LL; (j<n)&&ok; j++)
            if(!apsir(i+j*r)) ok=0;
        if(ok) return i;
    }
    return (1LL+(n-1LL)*r)*((n-1LL)*r)+1LL;///sigur sol
}
int main()
{
    f1>>t;
    while(t--)
    {
       f1>>n>>r;
       f2<<v(n, r)<<"\n";
    }
    return 0;
}