玩游戏,一共 N( 1≤N≤1000 )个人围成一圈,从某个人起顺时针顺序编号为 1 ~ N 号。
游戏只能有一个人赢,船长让大家数数,从编号为 1 的人开始顺时针报数,每轮从 1 报到 M 号( 1≤ M ),凡报到 M 的人视为出局,接着又从紧邻的下一个人开始同样的报数(紧邻的下一个人又报 1 )。
依次输入人数 N ,和报数规则的末数 M ,中间隔一个空格。输出能赢的相应编号R。
#include<stdio.h>
int main()
{
int N,i,R,M;
scanf("%d",&N);//N为人数
scanf("%d",&M);//M为报数规则
R=1;
for(i=2;i<=N;i++){
R=(R+M)%i;
if(R==0)
R=i;
}
printf("%d",R);
return 0;
}
数学问题,可好好算算来理解。
哎,熄灯了,就不多聊了。