C++
Даны числа a и b. Решите в целых числах уравнение ax+b=0
. Выведите все целочисленные решения этого уравнения, если их число конечно, выведите слово NO, если решений нет, выведите слово INF, если целочисленных решений бесконечно много.
Входные данные
Вводятся два целых числа, не превышающих 30000
по абсолютному значению.
Выходные данные
Выведите ответ задачи.
Ввод
Вывод
6
-2
NO
1
-7
7
Ответы
Чтобы решить уравнение ax + b = 0, нужно найти такое целое число x, чтобы ax + b было равно 0.
Если a = 0, то уравнение становится неопределенным, так как нельзя делить на 0. В этом случае бесконечно много целочисленных решений.
Если a ≠ 0, то уравнение имеет единственное решение: x = -b/a.
Чтобы проверить, является ли решение целым числом, нужно проверить, равно ли -b/a целому числу.
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b; // чтение входных данных
// проверка, что a и b не превышают 30000 по абсолютному значению
if (abs(a) > 30000 || abs(b) > 30000) {
cout << "NO" << endl;
return 0;
}
if (a == 0) { // проверка случая, когда a = 0
if (b == 0) {
cout << "INF" << endl;
} else {
cout << "NO" << endl;
}
} else { // проверка случая, когда a ≠ 0
int x = -b / a; // решение уравнения
if (x * a == -b) { // проверка, является ли x целым числом
cout << x << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}