Cod sursa(job #1061676)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 20 decembrie 2013 09:48:05
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.82 kb
#include <fstream>
using namespace std;
int T, n, R;

inline long long First(int grup)
{
	return (1LL * grup * (grup - 1) + 1LL);
}

inline bool Exista(long long val)
{
	int grup = (int)sqrt(1.0 * val);
	if(1LL * grup * grup != val)
		grup++;
	if(First(grup) <= val && val <= First(grup) + grup - 1)
		return true;
	return false;
}

inline bool Bun(int grup)
{
	int i;
	long long val = First(grup);
	for(i = 2; i <= n; ++i)
	{
		val += 1LL * R;
		if(!Exista(val))
			return false;
	}
	return true;
}

inline long long Solve()
{
	int grup = 1;
	while(!Bun(grup))
		grup++;
	return First(grup);
}

int main()
{
	ifstream fin("progresie.in");
	ofstream fout("progresie.out");
	fin >> T;
	while(T--)
	{
		fin >> n >> R;
		fout << Solve() << "\n";
	}
	fin.close();
	fout.close();
	return 0;
}