最近你一定经历过,当太多人同时使用BBS时,网络会变得非常非常慢。
为了解决这个问题,Sysop制定了一个高峰负荷时期的应急计划,以系统、完全公平的方式切断大学一些建筑的网络接入。我们的大学建筑是从1到n随机列举的。XWB是1号,曹光标(CGB)建筑是2号,等等,都是完全随机的。
然后随机选择一个数字m,BBS访问将首先在1号楼(显然是最公平的起点)被切断,然后在之后的每一个第m栋楼中,在n之后绕过1,忽略已经被切断的建筑。例如,如果n=17和m=5,则按[1,6,11,16,5,12,2,9,17,10,415,14,3,8,13,7]的顺序切断对建筑的网络访问。问题是,最后切断CGB Building显然是最公平的(毕竟,这是最好的程序员的来源),所以对于给定的n,需要仔细选择随机数m,以便建筑物2是最后选择的建筑物。
你的工作是编写一个程序,读取多个建筑n,然后确定最小的整数m,以确保我们的CGB大楼能够在大学其他部分被切断的情况下上网。
输入规范
输入文件将包含一行或多行,每行包含一个整数n,其中3<=n<150,表示宇宙中的建筑数量!
输入被n的零值(0)终止。
输出规格
对于输入的每一行,打印一行包含满足上述要求的整数m。
while True:
n = int(input())
if n == 0:
break
for i in range(2,n ** 2):
v = [x + 1 for x in range(n)]
while len(v) > 1:
v.pop(0)
v = v[(i - 1) % len(v):] + v[:(i - 1) % len(v)]
if v[0] == 2:
print(n,i)
break
不知道你这个问题是否已经解决, 如果还没有解决的话: