25 БАЛЛОВ!! Вася написал такую функцию:var s: integer;begin s := 1; while n 0 do begin...

+716 голосов
3.7m просмотров

25 БАЛЛОВ!! Вася написал такую функцию:var s: integer;begin s := 1; while n <> 0 do begin s := s * (n mod 10); n := n div 10; end; f := s;end;А затем вычислил значение f(512), оно оказалось равным 10. Затем пришла Маша и заменила в его коде в двух строках число 10 на число 2. Чему теперь будет равно значение f(512)? В ответе запишите одно целое число.


Информатика (92 баллов) | 3.7m просмотров
Дан 1 ответ
+76 голосов

Ответ:

0

Объяснение:

Данная программа находит произведение цифр числа:

  • пока n не равняется 0 делаем:
  •   умножаем s на остаток от деления n на 10,
  •   присваиваем n новое значение: целая часть от деления n на 10.

f(512) = 10. Проверяем: 5*1*2=10, всё верно.

Но затем, Маша поменяла 10 на 2, получается:

  • пока n не равняется 0 делаем:
  •   умножаем s на остаток от деления n на 2,
  •   присваиваем n новое значение: целая часть от деления n на 2.

512 это 2^9, то есть 2*2*2*2*2*2*2*2*2, остаток от деления всегда будет 0, и даже если бы и был другой, достаточно одного, чтобы превратить s в вечный 0. Так что результатом будет 0.

Вот, на всякий случай:


image
(3.7k баллов)