Найти - Пользователи
Полная версия: Снова задачки
Начало » Центр помощи » Снова задачки
1
AlexDos
Задача «Забавная игра»
Легендарный учитель математики Юрий Петрович придумал забавную игру с числами. А именно, взяв произвольное целое число, он переводит его в двоичную систему счисления, получая некоторую последовательность из нулей и единиц, начинающуюся с единицы. (Например, десятичное число 1910 = 1∙24+0∙23+0∙22+1∙21+1∙20 в двоичной системе запишется как 100112.) Затем учитель начинает сдвигать цифры полученного двоичного числа по циклу (так, что последняя цифра становится первой, а все остальные сдвигаются на одну позицию вправо), выписывая образующиеся при этом последовательности из нулей и единиц в столбик — он подметил, что независимо от выбора исходного числа получающиеся последовательности начинают с некоторого момента повторяться. И, наконец, Юрий Петрович отыскивает максимальное из выписанных чисел и переводит его обратно в десятичную систему счисления, считая это число результатом проделанных манипуляций. Так, для числа 19 список последовательностей будет таким:
10011
11001
11100
01110
00111
10011

и результатом игры, следовательно, окажется число 1∙24+1∙23+1∙22+0∙21+0∙20 = 28.

Поскольку придуманная игра с числами все больше занимает воображение учителя, отвлекая тем самым его от работы с ну очень одаренными школьниками, Вас просят написать программу, которая бы помогла Юрию Петровичу получать результат игры без утомительных ручных вычислений.
Формат ввода
Входной файл содержит одно целое число N (0 ≤ N ≤ 32767).
Формат вывода
Ваша программа должна вывести в выходной файл одно целое число, равное результату игры.
Пример
Пример ввода
19
Пример вывода
28
Actor
import sys

def dectobin(dec):
bin = ""
if dec < 0: raise ValueError, "must be a positive integer"
if dec == 0: return '0'
while dec > 0:
bin = str(dec % 2) + bin
dec = dec >> 1
return bin

def bintodec(bin):
dec = 0
for i in xrange(len(bin)):
dec = dec + int(bin[i]) * (2**(len(bin) - 1 - i))
return dec

def cycle(bin):
return bin[-1] + bin[:-1]

def main():
dec = int(sys.argv[1])
max = dec
for i in xrange(len(dectobin(dec)) - 1):
dec = bintodec(cycle(dectobin(dec)))
if dec > max: max = dec
return max

if __name__ == '__main__':
print main(),
Isem
from math import log
v = 19 # число для проверки, которое берем из файла
m = max( v>>k|(v&2**k-1)<<5-k for k in range( int(log(v,2))+1 ) )
print( "Максимально число для", v, "=", m )
print( "Привет Юрию Петровичу!" )
baa
n = list(bin(int(open('input.txt').readline())))
N = [n[:]]
for i in xrange(len(n) - 3):
n.insert(2, n.pop())
N.append(n[:])
n = eval(reduce(lambda x, y: x + y, max(N)))
open('output.txt', 'w').write(str(n))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB