Автор | Сообщение |
|
Отправлено: 26.04.23 19:00. Заголовок: 6279
Здравствуйте! А почему ответ 12, а не 15? И в самом задании описан алгоритм обработки числа 12 - как пример - на выходе 100 десятичное, а надо не меньше 120. "На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если N делится на 3, то в конец этой записи дописывается три последние цифры двоичной записи. б) если N не делится на 3, то остаток при делении на 3 числа N умножается на 3, переводится в двоичную запись и дописывается в конец двоичной записи числа N. 3. Полученная таким образом запись является двоичной записью искомого числа R. Например, для исходного числа 1210 = 11002 результатом является число 11001002 = 10010, а для исходного числа 410 = 1002 результатом является число 100112 = 1910. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее 120. В ответе запишите это число в десятичной системе счисления." for n in range(1,25): r=bin(n)[2:] if n%3==0: r=r+r[-3:] else: r=r+bin((n%3)*3)[2:] if int(r,2)>=120: print(n,int(r,2))
|
|
|
Ответов - 3
[только новые]
|
|
|
Отправлено: 28.04.23 09:40. Заголовок: 100% ошибка в ответе..
100% ошибка в ответе. правильный ответ 15. т.к. 12 даёт R=100, что не меньше 120. Более того для числа 12 ответ приводится даже в условии
|
|
|
|
Отправлено: 28.04.23 10:23. Заголовок: 0xFE пишет: 12 даёт..
0xFE пишет: цитата: | 12 даёт R=100, что не меньше 120 |
|
|
|
|
|
Отправлено: 28.04.23 10:44. Заголовок: oksakol пишет: А по..
oksakol пишет: цитата: | А почему ответ 12, а не 15? И в самом задании описан алгоритм обработки числа 12 - как пример - на выходе 100 десятичное, а надо не меньше 120. |
| Красивое решение, жаль, только не прочитал в начале страницы, что код при публикации нужно "заворачивать" в тег... Посмотри пожалуйста вверху выделено правило и, получится и красиво, и понятно, и опрятно...: for n in range(1,100): r = bin(n)[2:] if n%3==0: r = r + r[-3:] else: r=r+bin((n%3)*3)[2:] if int(r,2)>=120: print('n = ',n,'R = ',int(r,2)) break
|
|
|
|