Pagini recente » Cod sursa (job #1242215) | Cod sursa (job #3277072) | Cod sursa (job #2425266) | Cod sursa (job #3123087) | Cod sursa (job #1182950)
#include<cstdio>
#include<cmath>
#define eps 0.000001
using namespace std;
int apartine(long long nr)//daca numarul apartine progresiei
{
int rad;
float rad_f;
rad = sqrt(nr);
rad_f = sqrtf(nr);
if((rad_f-rad)>eps)rad++;
if(rad*(rad-1)+1 <= nr)return 1;
return 0;
}
long long calculeaza(int V, int N, int R)
{
int i;
long long E,VV;
VV=V-R;
if(VV<1)VV=1;
for(VV;VV<V;VV++)
{
E=VV;
for(i=1; i<=N; i++)
{
if(!apartine(E))break;
E += R;
}
if(i==N+1)return VV;
}
return V;
}
long long start(int N, int R)
{
long long V, E, k=1;
long long rad;
int i;
for(;;)//sau E+=valoare
{
V=k*(k-1)+1;
E=V;
for(i=1; i<=N; i++)
{
if(!apartine(E))break;
E += R;
}
if(i==N+1)return calculeaza(V,N,R);
k++;
}
}
int main()
{
/* progresie care contine k elemente, nu contine k elemente, contine k+1 elemente,
nu contine k+1 elemente
*/
int T, N, R, k=0, nr=1, i, j;
long long V;
freopen("progresie.in","r",stdin);
freopen("progresie.out","w",stdout);
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&N,&R);
printf("%lld\n", start(N,R));
}
return 0;
}