Задача
Задано натуральное число [latex]n.[/latex] Делится ли оно одновременно на [latex] a\ [/latex] и на [latex] b?[/latex]?
Входные данные
Три натуральных числа [latex] n, a, b,[/latex] не больших [latex] 10^{9}.[/latex]
Выходные данные
Выведите «YES» если [latex] n\ [/latex] делится одновременно на [latex] a\ [/latex] и на [latex] b\ [/latex]. Выведите «NO» иначе.
Тесты
№ | Ввод | Вывод |
---|---|---|
1 | 12 4 6 | YES |
2 | 10 5 6 | NO |
3 | 1056 22 6 | YES |
4 | 98 103 5 | NO |
Решение
Проверим делимость [latex] n\ [/latex] на [latex] a\ [/latex] и [latex] b.[/latex] Число $n$ делится одновременно на $a$ и $b$ тогда, когда и остаток от деления $n$ на $a$ равен $0$ ( n % a == 0), и остаток от деления $n$ на $b$ равен $0$ ( n % b == 0).
Код с ветвлением
1 2 3 4 5 6 7 8 9 10 11 |
#include <iostream> using namespace std; int main() { int n, a, b; cin >> n >> a >> b; cout << ( ( (n % a == 0) && (n % b == 0) )? "YES": "NO"); /* Делаем проверку делимости n одновременно на a и b, и, в зависимости от результата, при помощи тернарной операции выводим ответ */ return 0; } |
Код без использования ветвления
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int main() { int n, a, b, result; cin >> n >> a >> b; /* Используем небольшой трюк, который заключается в том, что cout в логических выражениях имеет значение 1 (true)*/ ( ( (n % a == 0) && (n % b == 0) ) && (cout << "YES") ); ( ( (n % a != 0) || (n % b != 0) ) && (cout << "NO") ); return 0; } |
Просто в качестве упражнения, можно было решить задачу проверкой только одного условия, а не двух?
Спасибо, подправил.
Зачтено.
Теперь нужно исхитриться и обойтись без ветвления.
Конечно, это может быть только какой-то трюк, но как упражнение подойдет.
Было много мелких замечаний. Надеялся разобрать их с Вами сегодня. Не получилось.
Пришлось удалить все span class=»crayon-sy» span class=»lang:js highlight:0 decode:true crayon-inline crayon-selected», которые Вы зачем-то вставляли перед каждой формулой. И ещё поправил некоторые странности.
Делаем следующую задачу.