Pagini recente » Cod sursa (job #1686206) | Cod sursa (job #2834368) | Cod sursa (job #2329861) | Cod sursa (job #2541828) | Cod sursa (job #1060161)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("progresie.in");
ofstream fout("progresie.out");
int T, N, R;
long long solve(int N, int R) {
for (int i = 0; ; ++ i) {
long long start = 1LL * i * (i + 1) + 1;
long long margin = i;
int isOK = 1;
for (int it = 1; it < N; ++ it) {
long long low = start + 1LL * it * R;
long long high = low + margin;
int j = (int)sqrt(low - 1);
long long lowi = 1LL * j * (j + 1) + 1;
long long highi = 1LL * (j + 1) * (j + 1);
if (high < lowi) {
isOK = 0;
break ;
}
if (low < lowi) {
start += lowi - low;
margin -= lowi - low;
}
else if (high > highi)
margin -= high - highi;
}
if (isOK)
return start;
}
}
int main() {
fin >> T;
for (int t = 1; t <= T; ++ t) {
fin >> N >> R;
fout << solve(N, R) << "\n";
}
}