为什么这个答案错误?

#include<stdio.h>
int main()
{
int a[100],b[100],n,i,j,s=0,c,t;
scanf("%d",&n);
for(i=1;i<=n;i++){
b[i]=i;
a[i]=0;
}
for(i=1;i<n+1;i++){
a[b[i]]=(s+1)%3;
s=a[b[i]];
printf("%d %d %d %d\n",a[b[i]],b[i],i,s);
c=n;
t=i;
if(a[b[i]]==0)
{
n--;

    for(j=i;j<=n;j++)
    {
        b[j]=b[j+1];
    } 
    i--;  
    }
    
     if(n==1)break;
    else if(t==c)i=0;
}
printf("%d",b[1]);
return 0;

}
img

供参考:

#include <stdio.h>
int main()
{
    int n, m=3, i, s = 0;
    printf ("N = ");
    scanf("%d", &n);
    for (i = 2; i <= n; i++)
    {
        s = (s + m) % i;
    }
    printf ("\nThe winner is %d\n", s+1);
    return 0;
}