Перейти к содержимому

Как посчитать число единиц в строке

  • автор:

Подсчёт количества едениц в строке

Сколько единиц содержится в двоичной записи значения выражения: 4^255 + 2^255 − 255?

Что не так? И пожалуйста объясните.

strawdog's user avatar

Lary's user avatar

Способ 1.

Приводим к строке, вызываем строковый метод подсчета символа.

Способ 2.

Считаем количество единиц, так как функция bin переводит к строковому типу вида ‘0bxxx’, где xxx — цифры числа в двоичном представлении.

Способ 3.

Также существует несложный алгоритм.

4^255 = 2^(255 * 2) степень двойки, будет обозначать единица в двоичном представлении данной суммы.

С вычитанием интереснее, можно проследить следующую закономерность:

2^n — 2^m — будет содержать n — m единиц (проверьте это и докажите самостоятельно).

Отсюда сделаем следующий финт: -255 = -256 + 1 = -2^8 + 2^0

В итоге наше выражение: 2^(255 * 2) + 2^255 — 2^8 + 1 будет иметь 1 + (255 — 8) + 1 единицу, так как 2^255 — 2^8 четное число и значит нулевой бит у него будет нулевой и прибавление единицы добавит только единицу.

Python program to calculate the number of digits and letters in a string

Given a string, containing digits and letters, the task is to write a Python program to calculate the number of digits and letters in a string.

Example:

Method 1: Using the built-in method isalpha()

Python3

Output:

Explanation:

Here we have used the built-in method isalpha() which generally helps us to identify whether that particular character is a alphabet or not and if it’s not then we simply ignore it. Assuming the condition that the string only constitutes of alphabets and digits then we can conclude that whether that character will be a digit or a alphabet. We already have the count of all the alphabets then we can subtract the count with the length of the string and hence we can get the number of digits.

Time complexity : O(n)

Space complexity : O(1)

Как на python можно посчитать количество цифр, содержащихся в строке?

для вычисления количества цифр в строке s придётся использовать анонимную функцию возвращающую 1 для цифры и 0 для буквы:

lambda x:1 if x.isdigit() else 0

Применив эту функцию к строке (с помощью функции map) получим из строки набор нулей и единиц, которые суммируем функцией sum

sum(map(lambda x:1 if x.isdigit() else 0,s))

Учитывая что при использовании логических значений в арифметических операциях истина имеет значение 1, а ложь имеет значение 0 полученное выражение примет вид:

Как посчитать число единиц в строке

?
В памяти-то число всегда хранится в двоичном виде.

Snow-ball, кстати, название темы поменяй, ибо

Profi, Спасибо!

Добавлено 21.01.06, 18:21

Сдвиг вправо на определенное количество бит.

Пример:
До сдвига:
X = 10011101

Делаем сдвиг: X := X shr 2;

После сдвига:
X = 00100111 (младшие биты 01 вышли за пределы разрядной сетки, 2 старших бита заполнились нулями)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *