const m=6; // строк n=9; // столбцов var a:array[1..m,1..n] of integer; i,j,k1,k2,s,k:integer; begin Writeln('Введите границы диапазона: '); Read(k1,k2); Randomize; s:=0; k:=0; for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=Random(199)-99; // [-99;99] Write(a[i,j]:4); if (a[i,j]>=k1) and (a[i,j]<=k2) then begin Inc(k); s:=s+a[i,j] end end; Writeln end; Writeln('Отобрано элементов: ',k,', их сумма равна ',s) end.
Будем последовательно решать задачу для первых i символов кода, основываясь на ответах для i - 1 и i - 2. Заметим, что если i-й символ кода равен 0 или ответа для i - 1 не существует, то ответ для i получается добавлением одного символа к ответу для i - 2, если последние две цифры кода нельзя понять, как зашифрованную букву, или ответа для i - 2 не существует, то надо добавить символ к i - 1, а иначе сравнить длины ответов и добавить букву к тому, кто короче.
Код (python 3.5): codes = "." with open('input.txt', 'r') as f: encoded = list(map(int,list(f.read( if len(encoded) == 1: print(codes[encoded[0]]) else: decoded = [codes[encoded[0]], ""] for i in range(1, len(encoded)): if (decoded[0] is None) or (encoded[i] == 0): decoded = [decoded[1] + codes[10*encoded[i-1] + encoded[i]], decoded[0]] elif (10*encoded[i-1] + encoded[i]>26) or (decoded[1] is None) or \ (len(decoded[1]) >= len(decoded[0])): decoded = [decoded[0] + codes[encoded[i]], decoded[0]] else: decoded = [decoded[1] + codes[10*encoded[i-1] + encoded[i]], decoded[0]] with open('output.txt', 'w') as f: f.write(decoded[0])
const
m=6; // строк
n=9; // столбцов
var
a:array[1..m,1..n] of integer;
i,j,k1,k2,s,k:integer;
begin
Writeln('Введите границы диапазона: '); Read(k1,k2);
Randomize;
s:=0; k:=0;
for i:=1 to m do begin
for j:=1 to n do begin
a[i,j]:=Random(199)-99; // [-99;99]
Write(a[i,j]:4);
if (a[i,j]>=k1) and (a[i,j]<=k2) then begin
Inc(k); s:=s+a[i,j]
end
end;
Writeln
end;
Writeln('Отобрано элементов: ',k,', их сумма равна ',s)
end.
Пример
Введите границы диапазона:
-20 55
-2 -52 -11 -12 70 -15 90 -51 75
-54 -92 32 54 -72 -24 -40 -37 -20
0 -14 -79 -1 -39 -34 39 47 34
-91 -98 -68 -16 -56 -55 97 66 59
-48 -67 -34 92 -77 12 -67 -23 -90
75 85 65 -98 -58 -53 -6 34 33
Отобрано элементов: 18, их сумма равна 188