Форум » Логические выражения » (№ 3605) (Е. Джобс) » Ответить

(№ 3605) (Е. Джобс)

Кэйт: В чём ошибка? var a,f,x: integer; begin for a:= 2000 downto 1 do begin f:=0; for x:= 1 to 1000 do begin if (((x mod 84<>0) or (x mod 90 <>0))<= (x mod a <>0))=False then f:=1; end; if f=0 then writeln(a); end; end.

Ответов - 3

polyakovss: for x:= 1 to 2000 do 2000 или больше.

Кэйт: Можете объяснить почему?

polyakovss: В условии задачи сказано: ... при любом натуральном значении переменной х Разве значения x от 1 до 1000 это ВСЕ натуральные значения x? Для большинства значений "a", найденных в Вашем варианте программы, при x от 2000 и более формула (((x mod 84<>0) or (x mod 90 <>0))<= (x mod a <>0)) = False. Решая подобные задачи методом перебора всех возможных вариантов, необходимо практически убедиться в том, что ответ не изменяется, если значительно увеличить диапазон перебора. В противном случае решайте теоретически.




полная версия страницы