Вот так считает <u>в пять раз быстрее</u>, чем в предыдущем решении. Тоже никакой оптимизации, просто более современный способ проверки.
<em>// PascalABC.NET 3.3, сборка 1611 от 06.01.2018</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin for var f:=1 to 9 do for var o:=0 to 9 do if o=f then continue else for var r:=0 to 9 do if Seq(1,o,r).Distinct.Count<>3 then continue else for var t:=1 to 9 do if Seq(f,o,r,t).Distinct.Count<>4 then continue else for var y:=0 to 9 do if Seq(f,o,r,t,y).Distinct.Count<>5 then continue else for var e:=0 to 9 do if Seq(f,o,r,t,y,e).Distinct.Count<>6 then continue else for var n:=0 to 9 do if Seq(f,o,r,t,y,e,n).Distinct.Count<>7 then continue else for var s:=1 to 9 do if Seq(f,o,r,t,y,e,n,s).Distinct.Count<>8 then continue else for var i:=0 to 9 do if Seq(f,o,r,t,y,e,n,s,i).Distinct.Count<>9 then continue else for var x:=0 to 9 do if Seq(f,o,r,t,y,e,n,s,i,x).Distinct.Count=10 then begin var a1:=f*10000+o*1000+r*100+t*10+y; var a2:=t*100+e*10+n; var a3:=s*10000+i*1000+x*100+t*10+y; if a1+a2+a2=a3 then begin writeln(a1,'+',a2,'+',a2,' = ',a3); Exit end end end.
1 скорее всего верно. Об этом точно написано как минимум в документации к Python. Так как это интерпретируемый язык, 5 скорее всего верно, но есть библиотеки, использующие C/С++ для вычислений, поэтому в некоторых случаях вычисления проводятся почти так же быстро, как в C++.
Гипотетически, можно создать процессор, под который можно было бы легко скомпилировать программу на Python. Язык программирования — абстракция, вещь в себе, поэтому он может быть как интерпретируемый, так и компилируемый, но в данном случае не существует истинных компиляторов (не в байт-код) Python, поэтому 1 верно, а 2 нет.
3 и 4 верны, так как на Android и iOS существуют интерпретаторы Python (Pythonista 3 для iOS и Pydroid для Android, например).
Программа для случая, когда в строке только "0", "1" и пробелы (т.е. проверки корректности ввода нет): procedure TForm1.Button1Click(Sender: TObject); var s:string; i,k,max:integer; begin if combobox1.Text<>'' then begin s:=combobox1.Text; combobox1.Items.Insert(0,s); s:=s+' '; while pos(' ',s)>0 do delete(s,pos(' ',s),1); k:=0; max:=0; for i:=1 to length(s) do if s[i]<>' ' then k:=k+1 else begin if k>max then max:=k; k:=0; end; label1.Caption:='Количество символов в самой длинной группе: '+inttostr(max); end; end;
Program rabota_s_massivom; uses crt; label metka; const N=30; var M: array[1..N] of integer; i,k,s,kmax,reserve:integer; begin for i:=1 to N do begin write('Введите ',i,'-й элемент: '); readln(M[i]); end; writeln('Массив:'); for i:=1 to N do begin write(M[i],' '); end; k:=1; {Число элементов в текущей последовательности. Изначально считаем, что последовательность состоит из одного (первого) элемента} {Ищем первый нечётный элемент:} repeat reserve:=reserve+1; until (m[reserve] mod 2 = 1) or (reserve = 30); writeln(reserve); if (m[reserve] mod 2 = 0) and (reserve = 30) then begin writeln('Все числа чётные. Искомая последовательность не существует'); goto metka; end; s:=M[reserve]; {Сумма элементов текущей последовательности пока что равна первому нечётному элементу} kmax:=0; {Наибольшая длина последовательности} for i:=reserve+1 to n do {Перебираем все элементы, начиная с первого нечётного} begin if (m[i] mod 2 = 1) then {Если текущее число всё ещё нечетно} begin s:=s+m[i]; {Увеличиваем сумму последовательности} k:=k+1 {Увеличиваем счётчик длины последовательности} end else {Если встретилось четное число} begin if k>kmax then {Проверяем, не является ли полученная последовательность длиннее нашего максимума} begin {Если да:} kmax:=k; {Запоминаем новую длину последовательности} reserve:=s {Запоминаем сумму её элементов} end; k:=0; {Устанавливаем длину новой последовательности равной 0} s:=0 {Сумма элементов этой последовательности тоже пока что = 0} end; end; if k>kmax then {Если самая длинная последовательность находится в конце массива, проверим ещё раз текущий максимум} begin kmax:=k; reserve:=s end; writeln('самая длинная последовательность нечётных чисел состоит из ',kmax,' элементов'); writeln('и сумма этой последовательности равна ',reserve); metka: end.