//约瑟夫环问题 递推公式 f[1]=0; f[i]=(f[i-1]+m)%i; (i>1)
//简单问题:报数到3的人退出 即每人的密码都是m=3;
//怎么错了呢? 找到错误,在for循环语句里,i<=n写为i<n,循环体少循环一次,导致结果错误
#include<stdio.h>
int main()
{
int n,i,s=0;
printf("请输入参加游戏的人数:");
scanf("%d",&n);
for(i=2;i<=n;i++)
//递推公式 f[i]=(f[i-1]+m)%i; (i>1) 计算到的人都被剔除,最后结果为s+1
s=(s+3)%i;
printf("最后的赢家是%d\n",s+1);
return 0;
}
//简单问题:报数到3的人退出 即每人的密码都是m=3;
//怎么错了呢? 找到错误,在for循环语句里,i<=n写为i<n,循环体少循环一次,导致结果错误
#include<stdio.h>
int main()
{
int n,i,s=0;
printf("请输入参加游戏的人数:");
scanf("%d",&n);
for(i=2;i<=n;i++)
//递推公式 f[i]=(f[i-1]+m)%i; (i>1) 计算到的人都被剔除,最后结果为s+1
s=(s+3)%i;
printf("最后的赢家是%d\n",s+1);
return 0;
}