OpenJudge

2746约瑟夫问题,不知道错哪了

  • 韩亚东
    韩亚东 18.2.2 回复

    #include<stdio.h>

    int main()
    {
    int m,n,i,j=1,x,y,t=0,l,z,k;
    int a[302];
    while(scanf("%d%d",&n,&m),m!=0&&n!=0)
    {

    if(m==1)
    {
    printf("%d",n);
    }
    j=1;t=0;
    for(i=0;i<n;i++)
    {
    a[i]=j;j++;
    }
    y=n;
    for(i=n;i>1;i--)
    {
    x=m%y;k=0;
    for(l=0;l<n;l++)
    {
    if(x==0)
    x=y;
    if(a[l]==0)
    continue;
    else
    t++;

    if(t==x)
    {
    a[l]=0;t=0;
    }

    }

    for(z=0;z<n;z++)
    {
    if(a[z]!=0)
    k++;
    }
    if(k==1)
    break;
    y--;

    }
    for(i=0;i<n;i++)
    if(a[i]!=0)
    printf("%d",a[i]);
    printf("\n");
    }
    }

想要评论吗?

注册OpenJudge账号,如果您已经注册,请先登入