Pagini recente » Cod sursa (job #2634771) | Cod sursa (job #2574555) | Cod sursa (job #2576770) | Cod sursa (job #1271241) | Cod sursa (job #1245428)
#include <bits/stdc++.h>
using namespace std;
long solve(long N, long R) {
for (int k = 1;; ++k) {
long start = k * k - k + 1;
long margin = k - 1;
bool isGood = true;
for (int i = 1; i < N; ++i) {
long here = start + R * i;
int floorSqrt = (int)sqrt(here);
int ceilSqrt = floorSqrt + 1;
if (floorSqrt * floorSqrt == here) {
ceilSqrt = floorSqrt;
}
long upperBound = ceilSqrt * ceilSqrt;
long lowerBound = upperBound - ceilSqrt + 1;
if (here + margin < lowerBound) {
isGood = false;
break;
}
if (here < lowerBound) {
start += (lowerBound - here);
margin -= (lowerBound - here);
} else if (here + margin > upperBound) {
margin -= here + margin - upperBound;
}
}
if (isGood) {
return start;
}
}
}
int main() {
ifstream in("progresie.in");
ofstream out("progresie.out");
int T = 0;
in >> T;
for (int i = 0; i < T; ++i) {
int N, R;
in >> N >> R;
out << solve(N, R) << "\n";
}
in.close();
out.close();
return 0;
}