М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ImagineDragons1111
ImagineDragons1111
01.09.2022 13:26 •  Информатика

Python. дана непустая последовательность целых чисел, оканчивающаяся числом 100. необходимо определить, есть ли в последовательности число 77.

👇
Ответ:
MeBloger
MeBloger
01.09.2022

program spos;

uses crt;

var

numb:array [1..100] of byte; // для последовательности чисел

i,f:integer; //счетчик и переменная в качестве флага

begin

randomize;

f:=0;

for i:=1 to 100 do numb[i]:=random(101);// задает последовательность

for i:=1 to 100 do

begin

write(',',numb[i]); // вывод на экран последовательность(можно удалить)

if (numb[i]=77)then f:=1; // в случае удачной проверки f:=1, в противном останется 0

end;

if f=0 then writeln('Yes') else writeln('No');

end.

program spos;

uses crt;

var

numb:array [1..100] of byte; // для последовательности чисел

i,f:integer; //счетчик и переменная в качестве флага

begin

randomize;

f:=0;

for i:=1 to 100 do begin

numb[i]:=random(101);// задает последовательность

write(' ',numb[i]);//вывод на экран, можно удалить

end;

writeln;

i:=0;

repeat

i:=i+1;

if (numb[i]=77)then f:=1; // в случае удачной проверки f:=1, в противном останется 0

until i<100;

if f=0 then writeln('Yes') else writeln('No');

end.

4,4(75 оценок)
Ответ:
sweater22weather
sweater22weather
01.09.2022

n = 0

x = False

print('Вводите числа по очереди')

print('Чтобы закончить введите 100')

while n != 100:

   n = int(input())

   if not(x) and (n == 77):

       x = True

if x:

   print('В последовательности есть число 77')

else:

   print('В последовательности нету числа 77')

4,6(68 оценок)
Открыть все ответы
Ответ:
urokiiiii
urokiiiii
01.09.2022
Можно поступить следующим образом: создаем multimap. Читаем слова из словаря, для каждого слова находим все супрефиксы, вставляем их в multimap в качестве ключа, значение можно ставить любое (например, (int) 1). После этого в цикле читаем слова-образцы и выводим значение count от каждого слова-образца. 

Программа будет иметь примерно такую структуру:
multimap<string, ...> subprefixes
input n
n times:
    input s
    for j = 0..size of s:
        if s[..j] is subprefix of s:
            subprefixes.insert(pair<string, ...>(s[..j], ...))
input m
m times:
    input s
    print subprefixes.count(s)

Остался вопрос, как определять, является ли s[..j] супрефиксом.  Конечно, можно это делать наивно: пройти циклом для всех возможных длин подстрок j и проверить, правда ли, что s[0] = s[s.size() - j - 1], s[1] = s[s.size() - j]...

Как можно ускорить всё это?
1) Выберем какое-нибудь достаточно большое (по сравнению с кодами символов) простое число x, например, x = 1009. Вычислим для строки s все хеши по формуле h_n(s)=s_0+s_1x+s_2x^2+\dots+s_{n-1}x^{n-1} для n = 1..len s (это делается за линейное время относительно len s, если предпросчитать все степени x от нулевой до 50)
Теперь если у строки s длины k есть супрефикс длины j, то обязательно h_j(s)x^{k-j}=h_{k}(s)-h_{k-j-1}(s) – проверить это быстрее, чем ходить циклом.
2) Необязательно хранить в multimap-е подстроки, это дорого и по времени и по памяти. Можно хранить хеши.
3) Можно вместо одного multimap-а создать 50 multimap-ов, в каждом хранить только супрефиксы одной длины.

Получаем примерно такое:
pow = new long long[51]
pow[0] = 1
for i = 1..50:
    pow[i] = x * pow[i - 1]
suprefixes = new multimap<long long, ...>[51]
input n
n times:
    input s
    h = hashes(s)
    k = len s
    for j = 1..k:
         if h[j] * pow[k - j] == h[k] - h[k - j - 1]:
              suprefixes[j].insert(pair(h[j], ...))
input m
m times:
    input s
    print puprefixes[len s].count(hash(s))

В принципе, для такого решения multimap не нужен, достаточно иметь map, и хранить для каждого ключа количество вхождений. Это можно делать и для multimap.
4,8(27 оценок)
Ответ:
lebeckaaanna
lebeckaaanna
01.09.2022

72 Кб

Объяснение:

1) Определим сколькими битами кодируется отдельный символ, т.е. найдем информационный вес символа.

По формуле  N = 2^{i}, где N - мощность алфавита, i - информационный вес символа алфавита.

512 = 2^{i}\\2^{9} = 2^{i}\\

i = 9 (бит)

2) Информационный объем или количество информации находят по формуле I = K*i, где K - количество символов, i - информационный вес символов.

K = 16*16*256 (симв.) - умножили количество символов на количество строк и получаем количество символов на одной странице, тогда чтобы найти количество символов в книге нужно домножить на количество страниц.

I = 16*16*256*9 = 2^{4}*2^{4}*2^{8}*9 = 2^{16}*9 (бит)

3) Переведем биты в килобайты, Кб.

1 байт = 8 бит

1 Кб = 1024 байт

1 Кб = 1024 байт = 1024*8 бит = 2^{10}*2^{3} = 2^{13} (бит)

Тогда для перевода нужно I =  2^{16}*9 разделить на 2^{13}:

\frac{2^{16}*9}{2^{13}} = \frac{2^{3}*9}{1} = 8*9 = 72 (Кб)

4,4(63 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ