n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數。求勝利者的編號。
題目不壹樣.所以其數學公式不能用..我編了個 能運行卻求不出結果 沒辦法拉 我剛入門 也寫了半天
自己改進下吧
#include "stdio.h"
void kl(int a[],int n);
main()
{
int a[102]={-1},i,k,n,x;
scanf("%d",&x);
for(i=1;i<x;i++)
a[i]=i;
for(i=1;i<x;i++)
if(i%3==0)
{
a[i]=-1;n++;
}
for(i=1,k=1;k<x;k++,i=k)
{
while(a[i]==-1)
{
i++;
}
a[k]=a[i];
a[i]=-1;
}
kl(a,(x-n));
}
void kl(int a[],int n)
{
int x=1,i,k=0,b=0;
for(i=1;i<=n;i++)
{
if(i%3==0)
{
a[i]=-1;
b++;
}
}
n=b;
for(i=1,k=1;k<x;k++,i=k)
{
while(a[i]==-1)
{
i++;
}
a[k]=a[i];
a[i]=-1;
if(n>2)
kl(a,(x-n));
else
{
for(i=1;i<x;i++)
if(a[i]!=-1)printf("\n%d\n",a[i]);
}
}
}