Может, все ЦИФРЫ чётные? Тогда смысл понятен. Будем считать это правильным условием. Тогда: program Chisla; var i,a,b,c,d:integer; BEGIN for i:=1000 to 9999 do begin a:=i div 1000; if a mod 2=1 then continue; //если первая цифра нечетная, переход на следующий виток цикла b:=(i div 100) mod 10; if b mod 2=1 then continue; //если вторая цифра нечетная, переход на следующий виток цикла c:=(i mod 100) div 10; if c mod 2=1 then continue; //если третья цифра нечетная, переход на следующий виток цикла d:=i mod 10; if d mod 2=1 then continue //если четвертая цифра нечетная, переход на следующий виток цикла else writeln(i); //иначе все цифры четные - выводим число i на экран end; //конец витка цикла END. //конец программы
{ Если что, часть программы не нужна для построения цепочки. Она просто иллюстрирует, что полученный результат верен. }
var sq : array[0..999] of array[0..9] of boolean; co : array[0..999] of integer; ar : array[1..10003] of 0..9; i,j: integer; x: integer; t : boolean; begin for i := 0 to 999 do begin for j := 0 to 9 do sq[i][j] := false; co[i] := 0; end; for i := 1 to 3 do ar[i] := 0; i := 3; t := true; {write('000');} while t do begin i := i + 1; x := ar[i-3]*100 + ar[i-2]*10 + ar[i-1]; if co[x] >= 10 then t := false else begin j := 1; while sq[x][j] do j := (j + 1) mod 10; ar[i] := j; sq[x][j] := true; co[x] := co[x] + 1; {write(j)} end; end; {writeln;} writeln('Length: ',i - 1);
{просто чтобы убедиться} for i := 0 to 999 do for j := 0 to 9 do sq[i][j] := false;
t := true; j := 0; i := 1; while (i <= 10000) and t do begin x := ar[i] * 100 + ar[i+1] * 10 + ar[i+2]; if sq[x][ar[i+3]] then t := false else begin sq[x][ar[i+3]] := true; j := j + 1; end; i := i + 1 end; if t and (j = 10000) then write('Confirmed') end.
Наибольшее возможное значение выражения (F+O+X+E)*(F*R*D*D) = 236196. Прилагаю небольшой скрипт на Python. Простенькая задачка на корректную организацию перебора с использованием вложенных циклов:
max_num = 0 for f in xrange(10): for o in xrange(10): for x in xrange(10): for e in xrange(10): for r in xrange(10): for d in xrange(10): b = f*r*d*d if b == 0: continue num = (f + o + x + e) * b if num > max_num: max_num = num
print "Maximum value of (F+O+X+E)*(F*R*D*D) is: %i" % max_num
Решение можно получить гораздо проще, если догадаться, что наибольшее значение выражения достигается, когда сумма F+O+X+E и произведение F*R*D*D являются максимальными. Это одновременно происходит, когда все цифры равны 9: (9+9+9+9)*9*9*9*9 = 236196
program Chisla;
var
i,a,b,c,d:integer;
BEGIN
for i:=1000 to 9999 do
begin
a:=i div 1000;
if a mod 2=1 then continue; //если первая цифра нечетная, переход на следующий виток цикла
b:=(i div 100) mod 10;
if b mod 2=1 then continue; //если вторая цифра нечетная, переход на следующий виток цикла
c:=(i mod 100) div 10;
if c mod 2=1 then continue; //если третья цифра нечетная, переход на следующий виток цикла
d:=i mod 10;
if d mod 2=1 then continue //если четвертая цифра нечетная, переход на следующий виток цикла
else writeln(i); //иначе все цифры четные - выводим число i на экран
end; //конец витка цикла
END. //конец программы