Pagini recente » Cod sursa (job #2805535) | Cod sursa (job #1510747) | Cod sursa (job #2939437) | Cod sursa (job #2417875) | Cod sursa (job #1382475)
#include <stdio.h>
int put[9900];
int r;
int min(int a,int b)
{
if(a<b) return a;
return b;
}
int exist(int a)
{
int s=1,e=9855,mij,minim=10001,pos=0;
while(s<=e)
{
mij=(s+e)/2;
if(put[mij]>=a)
{
minim=min(put[mij]-a,minim);
pos=mij;
e=mij-1;
}
else s=mij+1;
}
minim+=a;
if(minim-pos+1<=a) return 1;
return 0;
}
int ver(int nr,int cate)
{
if(cate==0) return 0;
if(exist(nr)==1) return ver(nr+r,cate-1);
}
int main()
{
freopen ("progresie.in","r",stdin);
freopen ("progresie.out","w",stdout);
for(int i=1;i<=9855;i++) put[i]=i*i;
int n;
int t;
scanf("%d",&t);
for(int xy=0;xy<t;xy++)
{
bool as=0;
scanf("%d%d",&n,&r);
for(int i=1;i<=9855;i++)
{
for(int j=put[i]-i+1;j<=put[i];j++)
{
if(ver(j+r,n-1)==0)
{
as=1;
printf("%d\n",j);
break;
}
}
if(as==1) break;
}
}
}