@Maksym1233

Почему код не работает?

Двоичная цифра.
Некоторая последовательность двоичных цифр получается следующим образом:
―первой записывается цифра 1;
―для получения следующей последовательности цифр необходимо все предыдущие
инвертировать, то есть вместо 0 записать 1 и наоборот.
Например, на 5-м шаге формирования последовательности она будет выглядеть так:
1 0 0 1 0 1 1 0 | 0 1 1 0 1 0 0 1.
Определить, какая двоичная цифра будет находиться на -м месте в данной
последовательности.
Входные данные:
В первой строке входного потока данных записано число 1 ≤ ≤ 15000 –
количество тестовых случаев; в следующих строках – порядковый номер двоичной
цифры , 1 ≤ ≤ 2
31 − 1, для которой нужно решить задачу.
Исходные данные:
Соответствующее значение двоичной цифры, каждое значение в отдельной строке.
Пример входящих данных:
2 (количество входных данных)
5
6
Пример исходных данных:
1 (ответ для 5)
0 (ответ для 6)
def invert_binary(binary, d):
    for i in range(1, d+1):
        binary = binary[:i] + str(1 - int(binary[i-1])) + binary[i:]
    return binary
data=[]
N = int(input())
for _ in range(N):
    d = int(input())
    binary = "1"
    result = invert_binary(binary, d)
    data.append(result[d-1])
for i in range(N):
    print(data[i])

В тестах правильно 0%, подскажите пожалуйста почему
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вам надо не получить последовательность, а только определить значение элемента этой последовательности.
Запишем последовательность и пронумеруем её элементы с нуля. После этого переведём номера в двоичную систему и запишем их над элементами
Номера в десятичной системе:
00000000001111111111222222222233
01234567890123456789012345678901
Номера в двоичной системе:
00000000000000001111111111111111
00000000111111110000000011111111
00001111000011110000111100001111
00110011001100110011001100110011
01010101010101010101010101010101
Последовательность:
10010110011010010110100110010110

Можно заметить, что там, где двоичное представление содержит чётное количество битов, элемент последовательности равен 1, нечётное - 0.
Остаётся преобразовать номер в двоичную систему и посчитать количество битов. Надо учесть, какая нумерация используется в задании и, при необходимости, переводить её в нумерацию с нуля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы