Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57

Выяснить, сколько единиц будет в двоичной записи числа, которое окажется в регистре после выполнения команды

08.06.2021, 12:09. Показов 1841. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перепишите пожалуйста код с питона на с++
Я только начинаю учить с++ и многого не понимаю.

Я написал задачу на питоне, но она не проходит по времени. Ускорить никак не получится, остается только переписать на плюсы.
Python
1
2
3
4
a,b,c = map(int,input().split())
b2 = 2**a + 2**b- 2**c
n = bin(b2).replace('0b','',1)
print(n.count( '1'  ))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2021, 12:09
Ответы с готовыми решениями:

Перепишите пожалуйста код (на C++)
Вот у меня есть код на php,не могли бы вы переписать его на C++,буду очень благодарен. <?php function print_files ($path,$ext)...

Перепишите мой код с C# на C++, пожалуйста
Без динамических массивов На C# написал за 2 минуты, а нужно на C++. Никак. using System; namespace Lab4_CPP_On_CSharp { ...

Перепишите пожалуйста код с python на c++
n,m= a=set() b=set() for i in range(n): a.add(int(input())) for i in range(m): b.add(int(input())) a_b=list(a&b) ...

21
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
08.06.2021, 12:50
JessyPinkman, лучше напишите условие задачи.
Мне кажется, на С++ надо использовать другой алгоритм.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
08.06.2021, 12:54
возводить в степень двойки без сдвига - извращение.
Да даже со сдвигом...
Судя по задаче - это что-то олимпиадное и разрядность двоичных чисел там скорее всего значительно превышает разрядность интов.
Поддерживаю, zss, в лоб считать в этой задаче стал бы юзер, но точно не программист.
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 12:59  [ТС]
В языке ассемблера для процессора «Тетриум» есть команда ADDSUB. Эта команда берёт значения регистров b, c и d и кладёт в регистр a величину 2b+2c−2d. При расчёте энергопотребления процессора потребовалось по содержимому регистров b, c, a и выяснить, сколько единиц будет в двоичной записи числа, которое окажется в регистре после выполнения команды ADDSUB.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 12:59
Лучший ответ Сообщение было отмечено zss как решение

Решение

Не?
C++
1
2
3
4
5
6
int main() {
    unsigned long a, b, c, b2, count = 0;
    std::cin >> a >> b >> c;
    for (b2 = (1 << a) + (1 << b) - (1 << c); b2 >>= 1; count += b2 & 1);
    std::cout << count << std::endl;
}
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 13:02  [ТС]
Неверный ответ там вроде 2 в степени ф б и тд
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 13:05
Чего?
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 13:07  [ТС]
for (b2 = (1 << a) + (1 << b) - (1 << c); b2 >>= 1; count += b2 & 1);
я имею ввиду что в задаче написано выражение 2b+2c−2d то есть там 2 в степени b + 2 в степени с - 2 в степени d
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 13:09
Именно это выражение и записано
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 14:28  [ТС]
Хорошо, спасибо, буду тестировать, просто в задаче пишет неверный ответ

Добавлено через 1 час 17 минут
А можешь пожалуйста объяснить сам код по порядку пожалуйста
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 14:32
Степень двойки - это единица сдвинутая влево на показатель степени.
Т.е. 1 << 3 == 2^3

Операция & в данном случае проверяет - равен ли последний бит единице. Если равен - прибавляем счетчик.
На следующей итерации сдвигаем число вправо, т.е. к первой позиции на проверку "подъезжает" следующий бит.
И так пока число "не кончится".
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 14:42  [ТС]
А если будет 1 << 0 то это будет единица?
Просто 3 2 0 не работает
Программа выдает 2 но ответом будет 11 т е 1011 в 2 и чной сс
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 14:55
Да, маленько косякнул
C++
1
for (b2 = (1 << a) + (1 << b) - (1 << c); b2 > 0; count += b2 & 1, b2 >>= 1);
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 15:00  [ТС]
Еще такой вопрос. Если получается отрицательное число то почему то в большинстве случаев выводит 60 например Ввод 2 2 5
Вывод 60 те я хочу сказзать что выводит на много больше вот второй ввод 2 2 9 и вывод 56 При первом вводе должно было получиться -24 т е 11000 а при втором -111111000 т е при первом правильный ответ 2 а при втором 6
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 15:05
JessyPinkman, а ты почитай как представляются отрицательные числа в двоичном виде
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 15:10  [ТС]
Я прочитал, но почему так много 56?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 15:23
Поменяй тип long на int, будет меньше
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 15:27  [ТС]
А как сделать модуль? Просто возможно по задаче так и надо
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.06.2021, 15:31
Какой модуль?
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
08.06.2021, 15:32  [ТС]
ну типа модуль числа т е |-12| = 12
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2021, 15:32
Помогаю со студенческими работами здесь

Перепишите пожалуйста код на builder c+

Перепишите пожалуйста код с языка Pascal на C++
Вот сам код. {$N+} uses crt; const nmax=60; function Step2(n:byte):extended; var p:extended; i:byte; begin p:=1;

Перепишите пожалуйста код с языка С++ на Visual Basic
Вот кусок кода который нужно переписать на Visual Basic int A=12.83, B=0.863,P=3.14; double o; float r; cin&gt;&gt; o; if...

Перепишите пожалуйста код программы с языка Visual Basic в C++
Вот код на языке Visual Basic Randomize Timer Dim A(19) As integer For i=0 to 19 A(i)=Int(Rnd*1000) Next For i=0 to 19 ...

Кто может перепишите пожалуйста код с pascal на c (желательно) / c++
var SetA,SetB,SetC : set of char; c:char; s:string; i:integer; point, newpoint : 0..3; A: array of integer; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru