Позначимо:
— кількість S-ніжок
— кількість драконів
Отримуємо систему рівнянь:
З першого рівняння виразимо :
Підставляємо у друге рівняння:
Якщо B - S \cdot A = 0, то N = S \cdot K (будь-яке y \geq 1 підходить)
Якщо B - S \cdot A \neq 0, то:
Перебираємо значення від 1 до нескінченності, поки задовільняється умова задачі
Для кожного обчислюємо x = A - K \cdot y
Перевіряємо, що x \geq 1 (має бути хоча б одна S-ніжка)
Обчислюємо N = \frac{B - x \cdot S}{y}
Перевіряємо, що ціле і невідʼємне (так, можуть бути дракони без ніг)
Виводимо знайдене
Якщо жодне не дає коректного розв'язку, виводимо .
Складність за часом:
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int s, k, a, b;
cin >> s >> k >> a >> b;
int y = 1;
int x = a - k * y;
while (x >= 1)
{
int n = b - x * s;
if (n >= 0 && n % y == 0)
{
cout << n / y << endl;
return 0;
}
++y;
x = a - k * y;
}
cout << -1 << endl;
}