题目:
谁会留下?规则如下:所有的学生绕成一圈,顺序排号,从第一个学生开始报数,凡是报到固定数字(例如 5)的都退出,直到只剩下一位学生游戏才中止。
每个学生都希望成为最终被留下的那位。 请编程计算一下,在第一次排号的时候排到第几位才能成为最终被留下的人。已知学生个数(<=50)。
#include<stdio.h>
int main(){
int n,s,i,k=0,l=0;//n为总数,s为固定数字,l为离队学生数
scanf("%d %d",&n,&s);
int c[n];
for(i=0;i<n;i++)
c[i]=i+1; //数据初始化
for(;l<n-1;){
for(i=0;i<n;i++){
if(c[i]){ //若此数没有被置零
k++;
if(k==s){
c[i]=0; //同学离队
k=0;
l++; //离队同学数+1
if(l==n-1){ //当离队同学达到n-1人时
for(i=0;i<=n;i++){
if(c[i]){
printf("%d",c[i]);
break;
} //输出剩下同学的号
}
break;
}
}
}
}
}
return 0;
}