pervushin752
26.10.2020 14:25

для передачи сообщения по открытому каналу связи шифровальщики придумали сложный шифр. шифр состоит из n различных чисел, записанных в одну строку через пробелы. дешифрованное сообщение состоит из k чисел, которые являются номерами исходных чисел, разбивающих исходное сообщение на k частей (подпоследовательностей), так что сумма минимумов каждой подпоследовательности будет максимальна.

итак, от вас требуется написать программу, которая выполняет дешифровку заданного шифра.
формат ввода

первая строка входного файла содержит два разделенных пробелом натуральных числа n и к (1 ≤ k < n ≤ 300).

вторая строка входного файла содержит зашифрованное сообщение –n разделенных пробелом целых различных натуральных чисел а1, а2, а3… аn (1 ≤ ai ≤ 10).
формат вывода

выходной файл в первой строке содержит максимальную сумму к слагаемых, которые являются минимумами каждой части разбиения последовательности на k частей.

во второй строке выходного файла содержится дешифрованное сообщение из разделенных пробелом к натуральных чисел – номеров чисел в последовательности, которые завершают каждую из подпоследовательностей зашифрованного сообщения.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
ValeryaKN15
28.04.2022 02:16

1.

1) 4*24*1000*16 ≈ 3*2^19 (бит/с)

2) 900 Мбайт=9*25*4*2^23 бит =9*25*2^25 бит

3) (9*25*2^25) / (3*2^19) = 3*25*2^6 (c) = 75*64 (c) =75*64/60 (мин)= 80(мин)                                

ответ  80 мин

2.

1)  640*480=(5*2^7)*(15*2^5)=5*15*2^12 пикселей

2) 240 Кбайт=15*2^4 *2^13 бит=15*2^17 бит

3) (15*2^17) / (5*15*2^13) = 2^4 / 5  бит =3,2 бит = 3 бит - 1 пиксель

4) 2^3=8 цветов                ответ 8 цветов

3.

1) 80 *0,7=56 Мбайт - cжатый файл

 80 Мбайт =5*2^4 *2^23 бит=5*2^27 бит

  56 Мбайт=7*2^26 бит

2)  5*2^27 / 2^22 = 5*2^5 (с) = 160 секунд - время несжатого файла

3)  7*2^26 / 2^22 =7*2^4 (c) = 112 (c)

4) 23(c)+12(c)+112(c)= 147 (c) - время сжатого файла

5) 160-147=13 (с)    ответ передача сжатого файла быстрее на 13 с

0,0(0 оценок)
Ответ:
sasunaklukina
24.07.2022 00:41
Var
    n, k, i, imax, j: integer;
    a: array[1..100]of integer;

begin
    randomize;
    n := random(30) + 10;
    for i := 1 to n do
    begin
        a[i] := Random(30);
        write(a[i], ' ');
    end;
    writeln();
   
    {сортировочка}
    for i := 1 to n - 1 do
    begin
        imax := i;
        for j := i + 1 to n do
            if a[j] > a[imax] then
                imax := j;
        k := a[i];
        a[i] := a[imax];
        a[imax] := k;
    end;
   
    for i := 1 to n do
        write(a[i], ' ');
   
    k := 0;
    for i := 2 to n - 1 do
        if (a[i] <> a[i - 1]) and (a[i] <> a[i + 1]) then
            k := k + 1;
   
    if a[1] <> a[2] then k := k + 1;
    if a[n] <> a[n - 1] then k := k + 1;
   
    writeln();
    writeln('No doubles - ', k);
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота