Pagini recente » Cod sursa (job #450675) | Cod sursa (job #2716502) | Cod sursa (job #1859336) | Cod sursa (job #47390) | Cod sursa (job #1824954)
#include<fstream>
#include<cmath>
#define pii pair<long long,long long>
#define x first
#define y second
#define mp make_pair
using namespace std;
ifstream f("progresie.in");
ofstream g("progresie.out");
int nr,i,t,n;
long long r;
pii sol,sol1,sol2;
inline long long primul(int x){
return 1LL * x * (x - 1) + 1;
}
inline long long ultimul(int x){
return 1LL * x * x;
}
inline bool se_inter(pii a,pii b)
{
if(a.y < b.x || a.x > b.y)
return 0;
return 1;
}
inline bool verif(int n)
{
if(!n)
{
return 1;
}
pii sol1 = mp(sol.x + r , sol.y + r);
int care = (int)sqrt(sol1.x - 1) + 1;
pii sol2 = mp (primul(care) , ultimul(care));
if(se_inter(sol1 , sol2))
{
sol = mp(max(sol1.x , sol2.x) , min(sol1.y , sol2.y));
return verif(n - 1);
}
return 0;
}
int main()
{
f >> t;
for(; t ; -- t)
{
f >> n >> r;
-- n;
for(i = 1 ; ; ++ i)
{
sol = mp(primul(i) , ultimul(i));
if(verif(n))
{
g << sol.x - 1LL * n * r << '\n';
break;
}
}
}
return 0;
}