Сравните две команды, с которых можно организовать цикл в программной среде Scratch. Для сравнения двух команд примените схемы алгоритмов (рис. 98). Bcerna повторить 10 Рис. 98. Сравнение двух команд
Var N,C,k,d:integer; Begin Write('N = ');ReadLn(N); For N:= 1 to N do Begin C:=N; k:=0; d:=0; While C<>0 do Begin k:=k+1; if C mod 10 <> 0 then if N mod (C mod 10) = 0 then d:=d+1; C:= C div 10 End; if d=k then Write(N,' ') End; End.
472
Объяснение:
Числe в двоичной системе счисления, состоящему из n единиц, в десятичной системе счисления соответствует число 2^n-1.
Например:
Десятичная Двоичная система
система счисления система счисления
2^1-1=1 1
2^2-1=3 11
2^3-1=7 111
2^8-1=255 111111
Извлечем логарифм из числа 4567 по основанию два и возьмем из полученного результата целую часть.
[㏒ 4567]=12
2^12=4096
Вычтем из полученного числа 1
4096-1=4095
Полученному числу соответствует 12 единиц в двоичной системе счисления.
Теперь остается найти искомое число:
4567-N=4095
N=4567-4095=472
N,C,k,d:integer;
Begin
Write('N = ');ReadLn(N);
For N:= 1 to N do
Begin
C:=N;
k:=0;
d:=0;
While C<>0 do
Begin
k:=k+1;
if C mod 10 <> 0 then
if N mod (C mod 10) = 0 then d:=d+1;
C:= C div 10
End;
if d=k then Write(N,' ')
End;
End.
Пример:
N = 2017
1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 126 128 132 135 144 155 162 168 175 184 212 216 222 224 244 248 264 288 312 315 324 333 336 366 384 396 412 424 432 444 448 488 515 555 612 624 636 648 666 672 728 735 777 784 816 824 848 864 888 936 999 1111 1112 1113 1115 1116 1122 1124 1128 1131 1144 1155 1164 1176 1184 1197 1212 1222 1224 1236 1244 1248 1266 1288 1296 1311 1326 1332 1335 1344 1362 1368 1395 1412 1416 1424 1444 1448 1464 1488 1515 1555 1575 1626 1632 1644 1662 1692 1715 1722 1764 1771 1824 1848 1888 1926 1935 1944 1962