Все фрагменты делают примерно одно и то же, для примера посмотрим на Паскаль. Там много разных вещей, которые мешают понять, что же делает алгоритм: описание переменных, ввод-вывод и т.д. По сути интересует нас прежде всего этот фрагмент:
L := 0; M := 0; --- L и M изначально нули
while x > 0 do --- пока x > 0
begin
L : = L + 1; --- L увеличиваем на 1
x := x div 10; --- div - это целая часть от деления. По сути, тут у x отбрасывается последняя цифра
if L mod 2 = 1 then --- mod - это остаток от деления. L mod 2 = 1 означает, что остаток от деления L на 2 равен 1, полностью строчка значит "если L нечётное"
M := M + (x mod 10); --- к M прибавляют последнюю цифру x
end;
Если немного подумать над этим, можно понять, что в L после выполнения фрагмента лежит количество цифр, а в M - сумма цифр, стоящих в четных (начиная справа) местах.
В программе написано так:
var (...) - описание переменных, нам не очень интересно
begin
readln(x); --- считывается x
(кусок, который уже разобрали)
writeln(L); --- вывод L и переход на новую строку
write(M); --- вывод M.
end.
Теперь условие можно переписать так:
Чему равно минимальное число с количеством цифр 3 и суммой цифр на четных местах 7?
28
Объяснение:
Запишем для каждого числа, сколькими его можно получить из предыдущих чисел.
1 — 12 — "1" — 13 — "2" + "1" — 24 — "3" — 25 — "4" — 26 — "5" + "2" — 37 — "6" — 38 — "7" — 39 — "8" + "3" — 510 — "9" — 511 — "10" — 512 — "11" + "4" — 713 — "12" — 714 — "13" — 715 — "14" + "5" — 916 — "15" — 917 — "16" — 918 — "17" + "6" — 1219 — "18" — 1220 — "19" — 1221 — "20" + "7" — 1522 — "21" — 1523 — "22" — 1524 — "23" + "8" — 1825 — "24" — 1826 — "25" — 1827 — "26" + "9" — 2328 — "27" — 2329 — "28" — 2330 — "29" + "10" — 2831 — "30" — 28170
Объяснение:
Все фрагменты делают примерно одно и то же, для примера посмотрим на Паскаль. Там много разных вещей, которые мешают понять, что же делает алгоритм: описание переменных, ввод-вывод и т.д. По сути интересует нас прежде всего этот фрагмент:
L := 0; M := 0; --- L и M изначально нули
while x > 0 do --- пока x > 0
begin
L : = L + 1; --- L увеличиваем на 1
x := x div 10; --- div - это целая часть от деления. По сути, тут у x отбрасывается последняя цифра
if L mod 2 = 1 then --- mod - это остаток от деления. L mod 2 = 1 означает, что остаток от деления L на 2 равен 1, полностью строчка значит "если L нечётное"
M := M + (x mod 10); --- к M прибавляют последнюю цифру x
end;
Если немного подумать над этим, можно понять, что в L после выполнения фрагмента лежит количество цифр, а в M - сумма цифр, стоящих в четных (начиная справа) местах.
В программе написано так:
var (...) - описание переменных, нам не очень интересно
begin
readln(x); --- считывается x
(кусок, который уже разобрали)
writeln(L); --- вывод L и переход на новую строку
write(M); --- вывод M.
end.
Теперь условие можно переписать так:
Чему равно минимальное число с количеством цифр 3 и суммой цифр на четных местах 7?
Очевидно, минимально возможное число 170.