qq_43896330
单木king
2018-12-11 09:59
采纳率: 0%
浏览 526

约瑟夫一类的问题,帮忙看下哪里错了

鬼群「Imp swarm」

Time Limit:1000MS Memory Limit:65536K
Total Submit:175 Accepted:36

Description

伊吹萃香最近迷上了一个游戏,首先利用自己操作疏密程度的能力发动spell card 鬼群「Imp swarm」,变出n个分身,并让分身组成一个类似循环链表的圈并从1开始编号,之后第一次让第m个分身消失,以后每次继续往后数k个分身,并让这个分身消失,开始玩之前,萃香自己先猜一个数x,看看最后剩下的那个分身是不是第x个分身

Input

输入包含多组数据,每组数据包含四个正整数n,k,m,x(1<=m,x<=n,k<=1000000)。输入结束标志为n=k=m=x=0。

Output

对于每个数据,如果猜对输出YES,猜错输出NO,每个数据的输出占一行。

Sample Input

8 5 3 1
4 2 1 3
4 2 1 4
0 0 0 0
Sample Output

YES
NO
YES
这是我的代码

#include<stdio.h>

int main()
{
    int n,k,m,x,num=0,count=1,i;
    int a[100000]={0};
    while(1)
    {
        scanf("%d%d%d%d",&n,&k,&m,&x);
        if(n==0&&k==0&&m==0&&x==0)
            break;
        a[m-1]=1;
        for(i=m;1;i++)
        {
            if(count==n-1)
            {
                break;
            }
            if(i==n)
            {
                i=0;
            }
            if(a[i]==0)
            {
                num++;
                if(num==k)
                {
                    a[i]=1;
                    num=0;
                    count++;
                }
            }
        }
        for(i=0;i<n;i++)
        {
            if(a[i]==0)
            {
                if(i+1==x)
                {
                    printf("YES\n");
                    break;
                }
                else
                {
                    printf("NO\n");
                    break;
                }
            }
        }
        for(i=0;i<n;i++)
            a[i]=0;
        num=0;
        count=1;
    }
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qq_43896330
    单木king 2018-12-11 10:00

    求求大佬们帮帮忙,看看哪里错了。

    点赞 评论

相关推荐