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

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

08.06.2021, 12:09. Показов 1819. Ответов 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
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
08.06.2021, 12:50
JessyPinkman, лучше напишите условие задачи.
Мне кажется, на С++ надо использовать другой алгоритм.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru