うちはサスケ726 2023-04-06 19:35 采纳率: 100%
浏览 37
已结题

zojpython 指定文盲老顾

最近你一定经历过,当太多人同时使用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。

  • 写回答

2条回答 默认 最新

  • 文盲老顾 WEB应用领新星创作者 2023-04-06 19:41
    关注
    
    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥30 关于#硬件工程#的问题:求一下解题思路
  • ¥15 运筹学对偶单纯行法构造扩充问题
  • ¥20 XP系统的老电脑一开机就提示找不到rundll.exe,付费求解
  • ¥15 milvus查询出来的score怎么转换成0-1之间的相似性
  • ¥15 多ip服务器站群如何搭建l2tp服务器
  • ¥15 lvgl V9移植到linux开发板
  • ¥15 VB.net中在窗体中创建一个button控件来关闭窗体,但是提示错误,我该怎么办
  • ¥15 网上下载好的程序但是arduinoIDE编程报错,运行不了,哪里出错了,能具体给改一下吗
  • ¥15 Sharepoint JS开发 付费技术指导
  • ¥15 输入程序运行仿真后,烟雾值不实时检测,变成固定值