Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0.
Входные данные
Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно.
Выходные данные
Необходимо вывести все целочисленные решения, если их число конечно, “NO” (без кавычек), если целочисленных решений нет, и “INF” (без кавычек), если их бесконечно много.
Таким образом, программа будет иметь следующий вид:
```
a, b, c, d = map(int, input().split())
if a == 0 and b != 0:
print("NO"
elif c == 0 and d != 0:
print("NO"
elif a == 0 and b == 0:
print("INF"
elif c == 0 and d == 0:
print("INF"
elif -d/c == -b/a:
print(-d/c)
else:
print("NO"
```
Если a = 0 и b ≠ 0, то уравнение не имеет решений.
Если a = 0 и b = 0, то уравнение имеет бесконечное количество решений.
Если a ≠ 0, то решение уравнения всегда единственно (так как дробь не может быть равна нулю, если числитель не равен нулю, а знаменатель не равен нулю). Значит, если вычисленное значение x является целым, то это и есть единственное целочисленное решение. Иначе целочисленных решений нет.
Код на C++:
#include
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
if (a == 0) {
if (b == 0) {
cout << "INF";
} else {
cout << "NO";
}
} else {
int x = -b / a;
if (a * x + b == 0 && c * x + d != 0) {
cout << x;
} else {
cout << "NO";
}
}
return 0;
}