12085. Бітова маска
Вам дано ціле число \(N\) і рядок \(S\), що складається з 0, 1 і ?. Нехай \(T\) — множина значень, які можна отримати заміною кожного ? у \(S\) на 0 або 1 та інтерпретувати результат як двійкове ціле число.
Наприклад, якщо \(S= ?0?\), ми маємо \(T=\{000_{(2)} ,001_{(2)} ,100_{(2)} ,101_{(2)} \}=\{0,1,4,5\}\).
Виведіть (як десяткове ціле число) найбільше значення в \(T\), менше або рівне \(N\). Якщо \(T\) не містить значення, менше або рівне \(N\), то виведіть -1.
Обмеження
- \(S\) — це рядок, що складається з 0, 1 і ?.
- Довжина \(S\) становить від 1 до 60 включно.
- \(1≤N≤10^{18}\)
- \(N\) — ціле число.
Формат вхідних даних
Перший рядок містить \(S\).
Наступний рядок містить \(N\).
Формат вихідних даних
У вихідний потік виведіть відповідь.
Приклад вхідних даних
?0?
2
Приклад вихідних даних
1
Як показано в постановці задачі, \(T=\{0,1,4,5\}\). Серед них 0 і 1 менші або дорівнюють \(N\), тому ви повинні вивести найбільше з них, 1.
Приклад вхідних даних
101
4
Приклад вихідних даних
-1
Ми маємо \(T=\{5\}\), яке не містить значення, меншого або рівного \(N\).
Приклад вхідних даних
?0?
1000000000000000000
Приклад вихідних даних
5
Коментарі