#include<stdio.h>
int main()
{
int m,n,i,j,k=0,a[100]={0};
scanf("%d%d",&n,&m);
if(n>=1&&m<=1000000)
{
for(i=0;i<n;i++)
{
a[i]=i+1;
}
while(n>1)
{
i=(i+m-1)%n;
k++;
for(j=i+1;j<n;j++)
{
a[j-1]=a[j];
}
n--;
if(i==n)
{
i=0;
}
}
}
printf("%d\n",a[i]);
return 0;
}
近期,翻看别人写的,看到有一个约瑟夫环的公式,个人建议背一下吧,这样会用就行了:
递推公式为:s=(s(n-1,m)+m)%n;
n是人数,m是最终留下来的序号