Pagini recente » Cod sursa (job #1300592) | Cod sursa (job #527496) | Cod sursa (job #1632191) | Cod sursa (job #1089432) | Cod sursa (job #1061978)
# include <cstdio>
# include <cmath>
# include <cassert>
typedef long long ll;
const char *FIN = "progresie.in", *FOU = "progresie.out";
int N, R, T;
inline ll pw (int n) {
return 1LL * n * (n - 1) + 1;
}
inline ll cauta(int x) {
ll delta = 1 + 8LL*x;
double rad = sqrt(delta);
double n1 = (-1 - rad) * 0.5, n2 = (-1 + rad) * 0.5;
return static_cast <ll> (n2);
}
inline bool is(ll val) {
int n = cauta((val - 1) >> 1) + 1;
ll first_elem = pw(n);
return first_elem <= val && 1LL * n * n >= val;
}
inline bool check (int sol) {
ll elem = pw(sol);
for (int i = 2; i <= N; ++i)
if (is(elem += R) == 0)
return 0;
return 1;
}
inline ll solve() {
int sol;
for (sol = 1; check(sol) == 0; ++sol);
return pw(sol);
}
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
for (scanf ("%d", &T); T; --T) {
scanf ("%d %d", &N, &R);
printf ("%lld\n", solve());
}
}