Python Формат входных данных Три целых числа x1, x2, x3, по модулю не превышающие 10^4 — координаты начала и конца вектора соответственно. Формат выходных данных Одно число — длина заданного вектора с точностью до шестого знака после запятой.
Var v:array [0..100000] of integer; a:array [0..100,0..100000] of integer; m,p,k,w:integer; procedure step(z,ma:integer);beginif z>0 then if a[z,ma]<>a[z-1,ma] then if a[z-1,ma]<a[z-1,ma-v[z]]+v[z] then begin step(z-1,ma-v[z]); write(v[z],' '); end else step(z-1,ma) else step(z-1,ma); end;
beginread(k);for p:=1 to k do begin read(v[p]); end;read(w);for p:=1 to k do begin for m:=1 to w do begin if m-v[p]>=0 then a[p,m]:=(max(a[p-1,m-v[p]]+v[p],a[p-1,m])) else a[p,m]:=a[p-1,m]; end; end;if a[k,w]=w then step(k,w) else writeln('No solution');end.
{Предвещая недовольство: мне самому не нравится эта подпрограмма, но динамические массивы обычно не изучают в школьной программе}
//Pascal ABC.NET v3.1 сборка 1219
Const n1=5; m1=8; n2=6; m2=4;
Type matrixa=array[1..n1,1..m1] of integer; matrixb=array[1..n2,1..m2] of integer;
procedure FindInd(f:integer;maa:matrixa;mab:matrixb); Var i,j:integer; s:string; begin for i:=1 to n1 do for j:=1 to m1 do if maa[i,j]=f then s:=s+'['+inttostr(i)+']['+inttostr(j)+']'+chr(10)+chr(13); writeln('For A:'); writeln(s); s:=''; for i:=1 to n2 do for j:=1 to m2 do if mab[i,j]=f then s:=s+'['+inttostr(i)+']['+inttostr(j)+']'+chr(10)+chr(13); writeln('For B:'); writeln(s); end;
Var maa:matrixa; mab:matrixb; i,j,f:integer; begin randomize; writeln('Matrix A:'); for i:=1 to n1 do begin for j:=1 to m1 do begin maa[i,j]:=random(20); write(maa[i,j]:4); end; writeln; end; writeln('Matrix B:'); for i:=1 to n2 do begin for j:=1 to m2 do begin mab[i,j]:=random(20); write(mab[i,j]:4); end; writeln; end; readln(f); FindInd(f,maa,mab); end.
procedure step(z,ma:integer);beginif z>0 then if a[z,ma]<>a[z-1,ma] then if a[z-1,ma]<a[z-1,ma-v[z]]+v[z] then begin step(z-1,ma-v[z]); write(v[z],' '); end else step(z-1,ma) else step(z-1,ma); end;
beginread(k);for p:=1 to k do begin read(v[p]); end;read(w);for p:=1 to k do begin for m:=1 to w do begin if m-v[p]>=0 then a[p,m]:=(max(a[p-1,m-v[p]]+v[p],a[p-1,m])) else a[p,m]:=a[p-1,m]; end; end;if a[k,w]=w then step(k,w) else writeln('No solution');end.