Форум » Логические выражения » (№ 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. Решая подобные задачи методом перебора всех возможных вариантов, необходимо практически убедиться в том, что ответ не изменяется, если значительно увеличить диапазон перебора. В противном случае решайте теоретически.
полная версия страницы