Pagini recente » Cod sursa (job #2152337) | Cod sursa (job #1573767) | Cod sursa (job #1103874) | Cod sursa (job #2555520) | Cod sursa (job #1185644)
#include <cstdio>
#include <cmath>
#define ll long long
using namespace std;
FILE *f=fopen("progresie.in","r");
FILE *g=fopen("progresie.out","w");
int T, N, R,i,it;
long long solve(int N, int R)
{
for (i = 0; ; ++ i)
{
ll start = 1LL * i * (i + 1) + 1;
ll margin = i;
int OK = 1;
for (it = 1; it < N; ++ it)
{
ll low = start + 1LL * it * R;
ll high = low + margin;
int j = (int)sqrt(low - 1);
ll lowi = 1LL * j * (j + 1) + 1;
ll highi = 1LL * (j + 1) * (j + 1);
if (high < lowi)
{
OK = 0;
break ;
}
if (low < lowi)
{
start += lowi - low;
margin -= lowi - low;
}
else if (high > highi)
margin -= high - highi;
}
if (OK)
return start;
}
}
int main()
{
fscanf(f,"%d",&T);
for (int t = 1; t <= T; ++ t)
{
fscanf(f,"%d%d",&N,&R);
fprintf(g,"%ld\n",solve(N, R) );
}
fclose(f);
fclose(g);
return 0;
}