Pagini recente » Cod sursa (job #1560411) | Cod sursa (job #2977461) | Cod sursa (job #1991573) | Cod sursa (job #3132845) | Cod sursa (job #3146828)
#include <cmath>
#include <fstream>
using namespace std;
int calculate_solution(const int n, const int r)
{
for (auto element = 1; ; ++element)
{
auto least_number = element * (element - 1) + 1, limit = element - 1;
auto found = true;
for (auto i = 1; i < n; ++i)
{
auto current_value = least_number + i * r;
const auto size = static_cast<int>(sqrt(current_value - 1)) + 1;
if (const auto first = size * (size - 1) + 1; current_value < first)
{
if (limit < first - current_value)
{
found = false;
break;
}
least_number += first - current_value;
limit -= first - current_value;
current_value = first;
}
if (const auto last = size * size; limit > last - current_value)
{
limit = last - current_value;
}
}
if (found)
{
return least_number;
}
}
return -1;
}
int main()
{
ifstream input("progresie.in");
ofstream output("progresie.out");
int t;
input >> t;
for (auto i = 0; i < t; ++i)
{
int n, r;
input >> n >> r;
output << calculate_solution(n, r) << "\n";
}
return 0;
}