当前位置: 高中信息技术 / 综合题
  • 1. (2022高三上·浙江开学考) 临近年关,学校为活跃新年气氛,举办迎新年联欢活动,最后一个节目为“我是大赢家”抽奖活动,为增强互动效果,最后中大奖的中奖者由教师们自己互动产生,游戏规则是:全校所有教工,每人获得一个随机编号,编号不得复,然后按照编号大小顺时针手拉手围成一个圈,最后一个老师与第一个老师手拉手,接下来由第1个人指定m的值,从编号为1的人开始报数(1,2,3…),报到m的人出圈,不再参加互动游戏,接着再由出圈人的上一位老师新指定m的值,并重新开始报数,逆时针报到m的人出列,游戏过程中出圈的人由老师们自己决定,如此继续,顺时针出一个人,逆时针出一个人,直到圈中只剩下一个人,他就是今天的最大赢家。小明编写了一个Python程序实现上述功能,程序运行时,输入参加游戏的人数,每次有人出圈后,再输入下一个要出圈的人数。

    #删除索引为P的游戏者

    defdelete(a,head,p):

        if a[p][1]!=-1:

            a[a[p][1]][2]=a[p][2]

            if a[p][2]!=-1:

                

        if head==p:

            head=a[head][2]

        return head

    n=int(input("请输入参数游戏的人数"))

    a=[[i+1,i-1,i+1]

    for i in range(n)]

        a[0][1]=n-1

        a[n-1][2]=0

        p=head=0

    while:

        m=int(input("请输入顺时针数第几位人出局"))

    for i in range(m-1):

       

        head=delete(a,head,p)

        p=a[p][1]     #退回到上一位游戏者

        if a[head][1]!=head:

            m=int(input("请输入逆时针数第几位人出局"))

            for i in range(m-1):

                p=a[p][1] head=delete(a,head,p)

              #退回到上一位游戏者

    print (a[head]

微信扫码预览、分享更方便