Федоровна-Васильева
?>

Написать программу в паскале которая распечатывает таблицу умножения на 2

Информатика

Ответы

Nikolai_oksana
Var
i:integer;
    begin
         for i:=1 to 10 do
            writeln(i,'*',2,'=',i*2);
end.
Shitikov-M.A.1307
Единицы измерения информации 
В 1 бит можно записать один двоичный символ.
1 байт = 8 бит
В кодировке ASCII в один байт можно записать один 256 символьный код
В кодировке UNICODE один 256 символьный код занимает в памяти два байта
1 килобайт = 1024 байт
1 мегабайт = 1024 килобайт
1 гигабайт = 1024 мегабайт
1 терабайт = 1024 гигабайтФормула Хартли 2 i = N где i- количество информации в битах, N - неопределенностьТаблица степеней двойки, которая показывает сколько информации можно закодировать с бит i012345678910N=2 i12481632641282565121024Чтобы вычислить информационный объем сообщения надо количество символов умножить на число бит, которое требуется для хранения одного символа

Например: двоичный текст 01010111 занимает в памяти 8 бит 
Этот же текст в кодировке ASCII занимает 8 байт или 64 бита 
Этот же текст в кодировке UNICODE занимает 16 байт или 128 бит. 



Suralevartem

Пусть сумма всех элементов равна full_sum, а длина массива 2k.

Предлагаю организовать банальный перебор: выберем k индексов из 2k, посчитаем сумму соответствующих элементов. Будем искать максимальную сумму, которая не превосходит full_sum/2. При этом сумма невыбранных элементов будет не меньше full_sum/2, и будет отличаться от суммы выбранных элементов на минимально возможную величину.

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

Код (Python 3):

from random import randint

from itertools import combinations

k = 10

a = [randint(1, 100) for _ in range(2 * k)]

print(*a)

full_sum = sum(a)

half_sum = full_sum // 2

max_sum = -1

answer = None

for seq in combinations(range(2 * k), k):

   s = sum(map(lambda ind: a[ind], seq))

   if s <= half_sum and s > max_sum:

       max_sum, answer = s, seq

   if s == half_sum:  

       break

left = [a[i] for i in answer]

right = [el for i, el in enumerate(a) if i not in answer]

a = left + right

print(*a)

Пример вывода:

50 39 19 63 16 4 82 45 63 33 6 57 39 16 38 4 66 56 87 84

50 39 19 63 16 4 82 57 16 87 45 63 33 6 39 38 4 66 56 84

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Написать программу в паскале которая распечатывает таблицу умножения на 2
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

dmitzu8594
buff-studio
Девяткина_Арсений
nunabat457
zalev
Сергеевич1907
bogatskayaa
mail2017
coffee2201
Виктория1690
ltdfoliant62
Korikm
Anshel2018534
s777tver109
VSpivak3122