Pagini recente » Cod sursa (job #354714) | Cod sursa (job #2166444) | Cod sursa (job #2295740) | Cod sursa (job #2188259) | Cod sursa (job #1911941)
#include <stdio.h>
#include <math.h>
int group(long long x) {
int i = sqrt(x) - 2;
while (x > (long long)i * i) i++;
return i;
}
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) {
long long nr = (long long)i * i - i + 1;
int limit = i - 1;
long long j;
for (j = 0; j < n - 1; ++j) {
nr += r;
int g = group(nr);
long long first = (long long)g * g - g + 1;
long long last = (long long)g * g;
if (limit < first - nr) break;
if (nr < first) {
limit -= (first - nr);
nr = first;
}
if (limit > last - nr) limit = last - nr;
}
if (j == n - 1) {
printf("%i\n", (int)(nr - (n - 1) * r));
break;
}
}
}
return 0;
}