Cod sursa(job #1061908)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 20 decembrie 2013 14:09:34
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.73 kb
#include<cstdio>
#include<cmath>
using namespace std;
int T,N,R,i;
long long First(int Group)
{
    return 1LL*Group*(Group-1)+1;
}
bool IsGood(long long X)
{
    int Group=(int)sqrt(double(X));
    if(1LL*Group*Group<X) Group++;
    if(First(Group)<=X && 1LL*Group*Group>=X) return 1;
    return 0;
}
bool StartGroup(int Group)
{
    long long X=First(Group);
    for(int i=2;i<=N;i++)
    {
        X+=R;
        if(!IsGood(X)) return 0;
    }
    return 1;
}
int main()
{
    freopen("progresie.in","r",stdin);
    freopen("progresie.out","w",stdout);
    for(scanf("%d",&T);T;T--)
    {
        scanf("%d%d",&N,&R);
        for(i=1;!StartGroup(i);i++);
        printf("%lld\n",First(i));
    }
    return 0;
}