Pagini recente » Cod sursa (job #2109860) | Cod sursa (job #2501465) | Cod sursa (job #11692) | Cod sursa (job #1311503) | Cod sursa (job #1245432)
#include <bits/stdc++.h>
using namespace std;
long long solve(long long N, long long R) {
for (int k = 1;; ++k) {
long long start = k * k - k + 1;
long long margin = k - 1;
bool isGood = true;
for (int i = 1; i < N; ++i) {
long long here = start + R * i;
int floorSqrt = (int)sqrt(here);
int ceilSqrt = floorSqrt + 1;
if (floorSqrt * floorSqrt == here) {
ceilSqrt = floorSqrt;
}
long long upperBound = ceilSqrt * ceilSqrt;
long 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");
FILE* readFile = fopen("progresie.in", "r");
FILE* writeFile = fopen("progresie.out", "w");
int T = 0;
fscanf(readFile, "%d", &T);
int N, R;
for (int i = 0; i < T; ++i) {
fscanf(readFile, "%d", &N);
fscanf(readFile, "%d", &R);
fprintf(writeFile, "%lld\n", solve(N, R));
}
return 0;
}