Ниже записан алгоритм. Сколько существует таких чисел x , при вводе которых алгоритм...

0 голосов
105 просмотров

Ниже записан алгоритм. Сколько существует таких чисел x , при вводе которых алгоритм печатает сначала 2, а потом 12? Что делает данная программа? Какие это числа? Объясните свои ответы. var x, a, b: longint; begin readln(x); a:=0; b:=0; while x>0 do begin a:=a + 1; b:=b + (x mod 10); x:=x div 10; end; writeln(a); write(b); end.


Информатика (18 баллов) | 105 просмотров
0

что-то в алгооритме не так

Дан 1 ответ
0 голосов

Решение:


1)      видим, что в последней строке выводятся на экран переменные a и b, поэтому сначала нужно определить, что они обозначают в программе

2)      перед началом цикла переменные a и  b обнуляются

3)      на каждом шаге цикла при выполнении некоторого условия переменная a увеличивается на 1, а b увеличивается на x mod 10, то есть, на остаток от деления x на 10 – это последняя цифра десятичной записи числа x  

4)      в конце каждого шага цикла операция x:=x div 10 отсекает последнюю цифру в десятичной записи числа

5)      цикл заканчивается, когда перестаёт выполняться условие x > 0, то есть, когда все цифры исходного числа отброшены

6)      таким образом, делаем вывод: после завершения цикла в переменной a находится количество цифр в десятичной записи числа, а в переменной b – их сумма

7)      если было выведено 2 и 12, то в числе 2 цифры, и их сумма равна 12; таким образом, нам нужно найти все двузначные числа, в котором сумма значений цифр равна 12

8)      число 12 может быть разложено на два слагаемых, меньших 10, как

12 = 3 + 9 = 4 + 8 = 5 + 7 = 6 + 6 = 7 + 5 = 8 + 4 = 9 + 3,

нам подходят числа 39, 48, 57, 66, 75, 84 и 93

(1.7k баллов)