うちはサスケ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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵