Вводится последовательность натуральных чисел, не превосхо-дящих 20000. Ноль – признак...

0 голосов
154 просмотров

Вводится последовательность натуральных чисел, не превосхо-дящих 20000. Ноль – признак конца. Требуется вывести максимальное из произведений двух элементов последовательности, которое делится на 26.


Информатика (343 баллов) | 154 просмотров
0

Есть ограничение на длину последовательности?

0

20000

0

Как-то так на 4 балла

0

Var x,max1,max2,max13,max26,n:integer;begin max1:=-20001; max2:=-20001; max13:=-20001; max26:=-20001; x:=1; while x<>0 do begin readln(x); if (x>max1) then max1:=x; if (x>max2) and (x mod 2=0) then max2:=x; if (x>max13) and (x mod 13=0) then max13:=x; if (x>max26) and (x mod 26=0) then max26:=x; end; if (max1*max26)>(max2*max13) then writeln(max1*max26) else writeln(max2*max13);end.

0

Вот так лучшеConst min=-20001;Var x,max1,max2,max13,max26,n:integer;begin max1:=min; max2:=min; max13:=min; max26:=min; readln(x); while x<>0 do begin if (x>max1) then max1:=x; if (x>max2) and (x mod 2=0) then max2:=x; if (x>max13) and (x mod 13=0) then max13:=x; if (x>max26) and (x mod 26=0) then max26:=x; readln(x); end; if max(max1*max26,max2*max13) mod min=0 then writeln('Nothing')else if (max1*max26)>(max2*max13) then writeln(max1*max26) else writeln(max2*max13);end.

0

Вот чтобы точноConst min=-20001;Var x,max1,max2,max13,max26,n,f:integer;begin max1:=min; max2:=min; max13:=min; max26:=min; f:=-1*min*min; readln(x); while x<>0 do begin if (x>max26) and (x mod 26=0) then max26:=x; if (x>max13) and (x mod 13=0) then max13:=x; if (x>max2) and (x mod 2=0) then max2:=x; if (x>max1) then max1:=x;

0

readln(x); if (max1*x mod 26=0) and (max1*x>f) then f:=max1*x; if (max2*x mod 26=0) and (max2*x>f) then f:=max2*x; if (max13*x mod 26=0) and (max13*x>f) then f:=max13*x; if (max26*x mod 26=0) and (max26*x>f) then f:=max26*x; end; if (f=-1*min*min) or (f=0) then writeln('Nothing') else writeln(f);end.

Дан 1 ответ
0 голосов

Программа на паскале:

const
  MAX_N = 20001;

var
  a: array[1..MAX_N] of integer;
  n, i, j, p, maxp: integer;
  
begin
  i := 1; 
  read(a[i]);
  while a[i] <> 0 do
  begin
    inc(i);
    read(a[i]);
  end;
  n := i - 1;
  maxp := 0;
  for i := 1 to n do
    for j := 1 to n do
    begin
      p := a[i] * a[j];
      if (p mod 26 = 0) and (p > maxp) then 
        maxp := p;
    end;
  if maxp = 0 then writeln('Not found')
              else writeln(maxp);
end.

(13.3k баллов)