Pagini recente » Cod sursa (job #1563451) | Cod sursa (job #3168725) | Cod sursa (job #1025921) | Monitorul de evaluare | Cod sursa (job #2632073)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("progresie.in");
ofstream fout("progresie.out");
#define int long long
int getPos(long long x)
{
return sqrt(x - 1) + 1;
}
void solve()
{
int n, r;
fin >> n >> r;
for(int i = 1; ; ++i)
{
long long act = i * 1LL * (i - 1) + 1;
int rest = i - 1;
bool ok = true;
for(int it = 1; it < n && ok; ++it)
{
act += r;
int pos = getPos(act);
long long l = pos * 1LL * (pos - 1) + 1;
long long r = pos * pos;
if(act < l)
{
if(l - act > rest)
{
ok = false;
break;
}
rest -= (l - act);
act = l;
}
rest = min(rest * 1LL, r - act);
}
if(ok == true)
{
fout << act - (n - 1LL) * r << '\n';
return ;
}
}
}
main()
{
int t;
fin >> t;
for(; t; --t)
solve();
}