function sum (n : integer) : integer;
begin
sum : = 0;
while n > 0 do
begin
sum : = sum + n mod 10;
n : = n div 10;
end;
end;
var
a : integer;
begin
repeat
writeln ('a = ');
read (a);
until sum (a) = 10;
writeln ('ok');
end.
смотри: у нас есть 2 команды: 1) вычитать какое-то число из общего числа 2) умножить общее число на 2.
нам дан алгоритм который переводит число 3 в число 18
алгоритм таков: 2 2 1 2
что это значит?
1. сначала идет 2, значит мы берем наше первоначальнео число - 3 и умножаем его на 2. получается 6
2. далее идет снова 2, значит мы берем наш ответ - это 6 и уможаем его снова на 2. получается 12
3. далее у нас идет 1. значит нам нужно 12 отнять какое-то число и потом результат умножить на 2, но мы не знаем какое. давай посмотрим на конечно число - оно равно 18. а последнее действие у нас умножить на 2. какое число нужно умножить на 2, чтобы получилось 18? ответ: 9. значит 12-3=9.
3 - это число n
4. далее снова идет 2. значит мы берем 9 и умножаем его на 2. получается 18.
Поделитесь своими знаниями, ответьте на вопрос:
var a,a1,a2: integer; beginrepeatwriteln (' введите число'); readln (a); a1: =a div 10; a2: =a mod 10; until (a1+a2=10); writeln ('верно '); end.