Pagini recente » Cod sursa (job #1247530) | Cod sursa (job #2415854) | Cod sursa (job #2399725) | Cod sursa (job #1835219) | Cod sursa (job #1911894)
#include <stdio.h>
int group(int x) {
int left = 0, right = x;
while (left < right) {
int center = (left + right) / 2;
if (x > center * center) left = center + 1;
else right = center;
}
// while (x > i * i) i++;
return left;
}
int main() {
freopen("progresie.in", "r", stdin);
freopen("progresie.out", "w", stdout);
int t;
scanf("%i", &t);
int n, r;
while (t--) {
scanf("%i%i", &n, &r);
int i;
for (i = 1; 1; ++i) {
int nr = i * i - i + 1;
int limit = i - 1;
int j;
for (j = 0; j < n - 1; ++j) {
nr += r;
int g = group(nr);
int first = g * g - g + 1;
int last = g * g;
if (limit < first - nr) {
break;
}
if (nr < first) nr = first;
if (limit > last - nr) limit = last - nr;
}
if (j == n - 1) {
printf("%i\n", nr - (n - 1) * r);
break;
}
}
}
return 0;
}