Задача взята с сайта e-olimp
Условие
Задано трицифровое число. Определить произведение его цифр.
Входные данные
В единственной строке заданное трицифровое число.
Выходные данные
В единственной строке произведение цифр заданного числа.
Тесты
# | Входные данные | Результат |
1 | 235 | 30 |
2 | 106 | 0 |
3 | 111 | 1 |
Решение
1 2 3 4 5 6 7 8 |
#include <iostream> using namespace std; int main() { int num = 0; cin>>num; cout<<(num / 100)*((num / 10) % 10)*(num % 10)<<endl; return 0; } |
Описание решения
Для решения данной задачи необходимо задать переменную num, которая будет хранить в себе вводимые данные. Так как будут приниматься целочисленные данные, то используем тип данных int. Далее необходимо разбить исходное число на три цифры и перемножить их между собой.
Для разбиения на цифры воспользуемся формулой:
10 |
(num / 100)*((num / 10) % 10)*(num % 10) |
В данной формуле в первом множителе мы получаем первую цифру, во втором — вторую, и в третьем соответственно третью.
После выполнения всех операций перейдем на новую строку с помощью команды endl.
Для перехода к странице на e-olimp с полностью выполненным данным заданием щелкните здесь.
Есть замечания
— Зачем проверка числа на отрицательность и смена знака? У Вас четко сформулированы условия в которых должна работать программа. Проверять эти условия конечно весело, но тогда нужно проверить вдруг оно не трицифровое (т.е. меньше 100 или больше 999), вдруг — не целое и, самое страшное — вдруг оно не число!
— Вы написали в ключевых словах «разбиение числа». Не поленитесь поискать на Википедии, что это такое.
Спасибо за замечания, исправил.
Зачтено. Молодец.