import array
spisok = array.array('I') # Массив положительных чисел.
for i in range(int(input())):
if not len([0 for z in range(1, i + 1) if not i % z]) % 2: spisok.append(i)
# not len(...) % 2 тоже что и len(...) % 2 == 0, но быстрее в 2 раза.
# [0 for z in ...] поскольку z нам не нужен, нам нужна лишь длина, я заменил его 0-ом.
print(len(spisok))
Или
Есть , ускорить код в 20 раз, cython.
from cpython.array cimport array
n = int(input()) + 1
spisok = array('I')
cdef unsigned int i, z
for i in range(n):
if not len([0 for z in range(1, i + 1) if not i % z]) % 2: spisok.append(i)
print(len(spisok))
Сохранишь этот код в файл с расширением pyx (например my_file.pyx)
В консоли введёшь команду:
pip install cython # библиотека
cythonize -i my_file.pyx || py -m cythonize -i main.pyx
И создай любой .py файл, добавь туда import того файла:
import my_file
Дано:
символов (мощность (размер) алфавита)
символов (длина сообщения)
Найти: (информац.объём сообщения, кол-во информации в нём)
Находим количество информации в одном символе.
По сути, это минимальное количество двоичных разрядов, в котором можно хранить один символ нашего алфавита.
Выбирается оно из таблицы степеней двойки (первое значение, не меньшее, чем наше ), либо через формулу (подбирая минимальное подходящее , либо решая уравнение через нахождение двоичного логарифма и затем округляя всегда с избытком, вверх).
Пример подбора:
если , то (алфавит из 64 символов можно хранить; для нас мало, надо минимум 107)
если , то (алфавит из 128 символов можно хранить; для нас достаточно, это даже больше, чем наши 107 символов в алфавите)
Выбираем минимальную подходящую степень= 7 (т.е. бит)
Пример расчёта:
отсюда, получаем что:
Можно считать одним из трёх : считать сам двоичный логарифм (если логарифм по произвольному основанию есть в вашем калькуляторе- во встроенном в Windows 10, в инженерном виде он есть например), или можно считать отношение десятичных либо натуральных логарифмов (см. дроби в расчёте). Десятичные либо натуральные логарифмы обычно есть в научных калькуляторах.
Получилось дробное значение, значит округляем до целого, но не как обычно, а всегда вверх (то есть, всегда берём целое число, большее чем наш результат). Так округляем потому, что нам нужно получить возможность хранить чуть больше символов, чем есть в нашем алфавите (раз уж ровно 107 не выходит).
Получаем, что: бит
Далее, находим информационный объём сообщения:
бит
ответ: 105 бит
Поделитесь своими знаниями, ответьте на вопрос:
Впрограмме паскаль нужно ввести высоту и ширину стены, также ввести стоимость длину и ширину обоев. вывести сколько рулонов потребуется на одну стену. и в этой же программе вывести сколько будет стоить столько рулонов.
program pr1;
var
a1,b1,a2,b2,k,c,s1,s2,sum: ineger;
begin
//
// тут ввод даных a1,b1 - стена; a2,b2 - обои; c- цена за 1 рулон, sum-сума;
//
k: =1;
s1: =a1*b1;
s2: =a2*b2;
while s2< s1 do begin
s2: =s2*k;
k: =k+1;
end;
sum: =c*k;
writeln(k,sum);
end.
//как то так!