info22
?>

Два шифровальщика обменялись сообщениями по 200 закодированных символов. кодовая таблица первого содержит n символов, второго – в 4 ра- за больше. на сколько больше бит информации передал второй шифро- вальщик?

Информатика

Ответы

Nadegdasb
N=2i , где n – величина кодовой таблицы, i – количество бит для кодирования одного символа. •  для первого шифровальщика – n1=2i1,  а для второго – n2=2i2, по условию кодовая таблица второго шифровальщика содержит в 4 раза больше символов, т.е. 4n1= n2 или 4*2i1 =2i2;   2i1+2 =2i2; i1+2=i2 •  количество информации, которое передал первый шифровальщик - 200*i1, а второй - 200*(i1+2). отсюда можно найти разницу 200*(i1+2)- 200*i1= 400 бит.
Adassa00441

 Для начала определим функцию определения простого числа:

def issimple(n):

   r=math.ceil(math.sqrt(n))

   for i in range(2,n):

       if n%i==0:

           return False

   return True

  для оптимизации перебираем числа до квадратного корня искомого числа. Если n делится на хотя бы одно число от 2-х до корня n возвращаем false. Иначе True

Приведу полный оптимизированный текст:

import math

def issimple(n):

   r=math.ceil(math.sqrt(n))

   for i in range(2,n):

       if n%i==0:

           return False

   return True

n=5

s=[2,3]

while True:

   if issimple(n) is True:

       s.append(n)

   if len(s)==10001:

       break

   n+=2

print(s[-1])

Объяснение:Не смотря на все попытки дальнейшей оптимизации цикл выполняется чуть меньше 3-х минут.  

Основные принципы оптимизации: перебираем начиная с 5-ти и увеличиваем на 2 (чтобы не включать четные числа.  

Условием выхода из цикла является длина списка = 10001

Если у вас получится выполнить задачу более оптимально рада услышать ваши предложения.  

НАДЕЮСЬ ТЫ ПОНЯЛ(А)

andreokiseleo69421
Сделал через динамический массив тоесть размер вводится с клавиатуры program project2;   {$apptype console} var a: array of integer;     i,n,s: integer; begin    randomize;   s: =0;     readln(n); //вводим размер массива с клавиатуры      setlength(a,n);   //задаем размер массива  for i: =0 to length(a) do    a[i]: =random(100);   //геним массив   for i: =0 to length(a) do    if a[i] mod 5 =0 then  //ищем сумму     s: =s+a[i];     writeln('summ: ',s);   //выводим сумму    readln; end.

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

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

Два шифровальщика обменялись сообщениями по 200 закодированных символов. кодовая таблица первого содержит n символов, второго – в 4 ра- за больше. на сколько больше бит информации передал второй шифро- вальщик?
Ваше имя (никнейм)*
Email*
Комментарий*

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

Анатольевич Сергей7
mouse-0211fsb3509
vikapar2646
beliaeva2
eugene869154
Zeegofer
dailyan539
AleksandrovnaIgor
ИП_Рамис873
ludakamasana
alfastore4
Тимур Андраниковна634
lezzzzka5510
tsatskina857
lika080489