Задача 4: Задача из ЕГЭ
Тимофей готовится к ЕГЭ. Для отработки навыка скорости и точности поиска ответов на задания по теме «Системы счисления» ему часто приходится решать примеры типа «сколько значащих нулей (или единиц) содержит двоичная запись значения выражения 2a + 2b − 2c?». Значащими называются все цифры, кроме нулей в начале числа (которые обычно и не записываются). Например, десятичное число 20 в двоичной системе счисления записывается как 10100, и в этой записи две значащие цифры «1» и три значащие цифры «0».
Помогите Тимофею по известным a, b и c узнать ответ на задачу.
Входные данные
Программа получает на вход четыре целых неотрицательных числа: a, b, c и d, записанные в отдельных строках. Числа a, b и c соответствуют показателям степеней двоек в задании (0 ≤a, b, c, ≤109). При этом гарантируется, что 2a + 2b − 2c > 0 и a ≠ b.
Число d равно либо 0, либо 1 — цифра, количество которых в значении выражения нужно узнать.
Выходные данные
Программа должна вывести одно неотрицательное целое число — ответ на задачу.
Система оценивания
Решение, правильно работающее только для случаев, когда входные данные не превосходят 12, будет оцениваться в 40 баллов.
Приложения:

Katerina3040:
2^a + 2^b - 2^c
Ответы на вопрос
Ответил stglupa
7
a = int(input())
b = int(input())
c = int(input())
d = int(input())
k = 2**a + 2**b - 2**c
cnt = 0
while k > 0 :
if(k % 2 == d):
cnt += 1
k //= 2
print(cnt)
if b>a:
a,b=b,a
if b>c:
ind1=a-b+1
ind2=a-c+1
ans=ind2-ind1
ans=ans+1
if d == 1:
print(ans)
else:
print(a+1-ans)
elif b==c:
ans=1
if d == 1:
print(ans)
else:
print(a+1-ans)
else:
ans=a-c+1
if d == 1:
print(ans)
else:
print(a-ans)
Новые вопросы