Pagini recente » Cod sursa (job #2332093) | Cod sursa (job #2877989) | Cod sursa (job #733733) | Cod sursa (job #1898119) | Cod sursa (job #1092470)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair <int, int>
#define pll pair <ll, ll>
#define x first
#define y second
using namespace std;
pll sol, curr;
int tests, n, r;
inline int inters(ll l1, ll r1, ll l2, ll r2)
{
return !(l1 > r2 || l2 > r1);
}
inline int check(int left)
{
if (left == 0)
return 1;
pll intv = mp(sol.x + r, sol.y + r);
int idx = (int)sqrt(intv.y - 1) - 1;
for (int i = 0; i < 2; i++)
{
idx++;
curr = mp((ll)(idx - 1) * idx + 1, (ll)idx * idx);
if (inters(intv.x, intv.y, curr.x, curr.y))
{
curr.x = max(intv.x, curr.x);
curr.y = min(intv.y, curr.y);
sol = curr;
return check(left - 1);
}
}
return 0;
}
int main()
{
freopen("progresie.in", "r", stdin);
freopen("progresie.out", "w", stdout);
scanf("%d", &tests);
while (tests--)
{
scanf("%d%d", &n, &r);
int i = 2;
sol = mp((ll)(i - 1) * i + 1, (ll)i * i);
for (int i = 1; ; i++)
{
sol = mp((ll)(i - 1) * i + 1, (ll)i * i);
if (check(n - 1))
{
printf("%lld\n", sol.x - (ll)(n - 1) * r);
break ;
}
}
}
return 0;
}