Pagini recente » Cod sursa (job #1194170) | Cod sursa (job #1420545) | Cod sursa (job #343079) | Statisticile problemei Rosii mici | Cod sursa (job #1245446)
#include <bits/stdc++.h>
using namespace std;
long long solve(int N, int R) {
for (int k = 1;; ++k) {
long long start = 1LL * k * k - k + 1;
long long margin = k - 1;
bool isGood = true;
for (int i = 1; i < N; ++i) {
long long hereLow = start + 1LL * R * i;
long long hereHigh = hereLow + margin;
int j = (int)sqrt(hereLow - 1);
long long goodLow = 1LL * j * (j + 1) + 1;
long long goodHigh = 1LL * (j + 1) * (j + 1);
if (hereHigh < goodLow) {
isGood = false;
break;
}
if (hereLow < goodLow) {
start += (goodLow - hereLow);
margin -= (goodLow - hereLow);
} else if (hereHigh > goodHigh) {
margin -= (hereHigh - goodHigh);
}
}
if (isGood) {
return start;
}
}
}
int main() {
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;
}