Pagini recente » Cod sursa (job #1599465) | Cod sursa (job #2124493) | Cod sursa (job #2740537) | Cod sursa (job #3146824) | Cod sursa (job #1451305)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("progresie.in");
ofstream fout("progresie.out");
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define pll pair<ll, ll>
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
ll t, n, r, i, isOk, block, cand, margin, where, myStart, myEnd, goodStart, goodEnd;
ll getBlock(ll x) {
return 1 + (int)sqrt(x - 1);
}
ll first(ll block) {
return block * (block - 1) + 1;
}
ll last(ll block) {
return block * block;
}
int main() {
fin >> t;
for (; t; t--) {
fin >> n >> r;
for (block = 1;; block++) {
cand = first(block);
margin = block - 1;
isOk = 1;
for (i = 1; i < n; i++) {
myStart = cand + r * i;
myEnd = myStart + margin;
where = getBlock(myStart);
goodStart = first(where);
goodEnd = last(where);
if (myEnd < goodStart) {
isOk = 0;
break;
}
if (myStart < goodStart) {
margin -= goodStart - myStart;
cand += goodStart - myStart;
} else if (myEnd > goodEnd)
margin -= myEnd - goodEnd;
}
if (isOk) {
fout << cand << '\n';
break;
}
}
}
return 0;
}