Дано целое число n (> 0). используя операции деления нацело ивзятия остатка от деления, вывести все его цифры, начиная с самой правойрешение: #include#includeusing namespace std; int n, a=1, k=0, b=0, s=1; int main(){ cin> > n; while( n/a > 0) { a=10*a; } while(n/s > 0){ k=b*a+k; a=a/10; s=s*10; (n%s)/(s/10)==b; }cout< return 0; }но оно выводит ноль. почему?
Если состояний три, то и система счисления - троичная.
100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены.
Переводим 100 в троичную систему счисления.
100 / 3 = 33, остаток 1
33 / 3 = 11, остаток 0
11 / 3 = 3, остаток 2
3 / 3 = 1, остаток 0.
Теперь выписываем остаток и приписываем к нему остатки в обратном порядке: 10201
Итак, 100₁₀ = 10201₃, т.е для кодирования ста сообщения понадобится пять светодиодов (по числу разрядов в числе).
Короткий вариант
Если состояний три, то и система счисления - троичная.
100 сообщений потребуют 101 разное состояние, потому что еще должно быть нулевое состояние, когда сообщения отсутствуют и все светодиоды погашены.
Нам нет необходимости узнавать точное троичное значение числа 100, поскольку необходимо знать лишь количество разрядов в его записи. А это позволит сделать нахождение логарифма 100 по основанию 3.
Окончательно принимаем n=5, т.е.для кодирования ста сообщения понадобится пять светодиодов