4
Объяснение:
Зная, что изначально в куче было S камней, для победы нужно получить не менее 32, рассмотрим все возможные ходы Пети, при которых он не выиграет. Чтобы Петя не выиграл, после любого его хода в куче должно получиться меньше 32 камней.
Действие А) S+1<32, тогда S<32-1=31
Действие Б) 3*S+1<32, тогда S<(32-1)/3=11
А теперь распишем ходы Вани. Чтобы точно победить, Ване нужно действовать так, чтобы получить максимальный результат - из двух действий максимальный дает действие Б. После его хода в куче должно стать или 32 камня, или больше.
Действие А) 3*(S+1)+1=3*S+4>=32, тогда S>=(32-4)/3=10
Действие Б) 3*(3*S+1)+1=9*S+4>=32, тогда S>=(32-4)/9=4
Таким образом мы понимаем, что нужное для Ваниной победы первым ходом число S должно должно лежать в диапазоне от 4 до 31, тогда минимальным подходящим будет 4. Проверим:
Случай 1. Петя ходит действием А. 4+1=5. Ваня ходит действием Б. 5*3+1=16. Ваня не выиграл.
Случай 2. Петя ходит действием Б. 3*4+1=13. Ваня ходит действием Б. 13*3=39. Ваня выиграл.
Несмотря на то, что если Петя пойдет действием А, Ваня не выиграет, его победа всё равно возможна, если тот пойдет действием Б. А нас именно о случае, когда она возможна, и спрашивают.
Чтобы убедиться в верности рассуждений, проверим, нельзя ли взять еще меньшее число - 3:
Случай 1. Петя ходит действием А. 3+1=4. Ваня ходит действием Б. 3*4+1=13. Ваня не выиграл.
Случай 2. Петя ходит действием Б. 3*3+1=10. Ваня ходит действием Б. 3+10+1=31. Ваня не выиграл.
Таким образом, мы выяснили, что минимальным начальным количеством камней, когда возможна победа Вани первым ходом, является 4.
ответ: Тут в задание опечатка скорее всего
Если делать по примеру из задания, будет такой код:
for i in range(20):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '11' + n + '00'
r = int(r, 2)
if r > 215:
print(i)
Если делать по условию задание, будет такой код:
for i in range(30):
n = i
n = bin(n)[2:]
sum = 0
if int(n) % 2 == 0:
sum = str(n).count('1')
sum = bin(sum)[2:]
r = n + sum
else:
r = '1' + n + '00'
r = int(r, 2)
if r > 215:
print(i)
100111₂
+
1110₂
110101₂
Объяснение:
Сложение в 2 СС:
0₂ + 0₂ = 0₂
1₂ + 0₂ = 1₂
0₂ + 1₂ = 1₂
1₂ + 1₂ = 10₂ (переход в новый разряд)
1₂ + 0₂ = 1₂ (1 пишем)
1₂ + 1₂ = 10₂ (0 пишем + 1 в уме)
1₂ + 1₂ = 10₂ 10₂ + 1₂ (который был в уме) = 11₂ (1 пишем + 1 в уме)
0₂ + 1₂ = 1₂ 1₂ + 1₂ (который был в уме) = 10₂ (0 пишем + 1 в уме)
0₂ + 1₂ (который был в уме) = 1₂ (1 пишем)
1₂ - нет пары (1 пишем - если нет пары, то просто переписываем цифру в ответ)