Module: 位运算 (C++)


Problem

13 /13


数学老师尤里·彼得罗维奇

Problem

传奇数学老师尤里·彼得罗维奇想出了一个有趣的数字游戏。也就是说,他取一个任意整数,将其转换为二进制数字系统,得到一些从 1 开始的 0 和 1 序列。 (例如,十进制数\(19_{10} = 1\cdot2^4+0\cdot2^3+0\cdot2^2+1\cdot2^1+1\cdot2^0 \ )  二进制写为10011 2.) 然后老师开始循环移位结果二进制数的位数(这样最后一位变成第一个,其他都向右移动一位),写输出列中的零和一的结果序列 —他注意到,无论初始数字的选择如何,结果序列都会从某个时刻开始重复。最后,尤里·彼得罗维奇 (Yuri Petrovich) 找到了写出的数字中的最大值,并将其转换回十进制数字系统,将此数字视为已完成操作的结果。因此,对于数字 19,序列列表将是:
10011
11001
11100
01110
00111
10011

因此游戏的结果将是一个数字 \(1\cdot2^4+1\cdot2^3+1\cdot2^2+0\cdot2^1+0\cdot2^0 = 28_{ 10} \)

由于发明的数字游戏越来越需要老师的想象力,从而分散了他与非常有天赋的小学生一起工作的注意力,因此要求您编写一个程序,帮助 Yuri Petrovich 获得游戏结果,而无需进行繁琐的手动计算。
 
<分区>
输入:
输入文件包含单个整数 N (0<=N<=32767)。 <分区>
输出: 
您的程序应将等于游戏结果的单个整数打印到输出文件。

例子 <头> <日># <正文>
输入 输出
1 1 1