Pagini recente » Cod sursa (job #1765062) | Cod sursa (job #3218299) | Cod sursa (job #2451575) | Cod sursa (job #1212348) | Cod sursa (job #1140655)
//#define _CRT_SECURE_NO_DEPRECATE
//#include <cstdio>
//#include <cmath>
//
//long long T, N, R;
//
//int main()
//{
// freopen("progresie.in", "r", stdin);
// freopen("progresie.out", "w", stdout);
//
// scanf("%lld", &T);
// while (T--)
// {
// scanf("%lld %lld", &N, &R);
//
// for (int i = 0;; ++i)
// {
// long long start = i * (i + 1) + 1;
// long long margin = i;
// bool isSol = true;
//
// for (int j = 1; j < N; ++j)
// {
// long long start_t = start + j * R;
// long long end_t = start_t + margin;
// long long r = sqrt(start_t - 1);
// long long start_i = r * (r + 1) + 1;
// long long end_i = (r + 1) * (r + 1);
// if (end_t < start_i)
// {
// isSol = false;
// break;
// }
// if (start_t < start_i)
// {
// start += start_i - start_t;
// margin -= start_i - start_t;
// }
// else if (end_t > end_i)
// {
// margin -= end_t - end_i;
// }
// }
// if (isSol)
// {
// printf("%lld\n", start);
// break;
// }
// }
// }
//
// return 0;
//}
#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";
}
}