#include <stdio.h>
/*
作者:
厦门理工学院
计算机与信息工程学院 FnLock
程序描述:
一年一度的厦门理工学院程序设计大赛又开始了
今年是第四届。今年赛会组织方决定用一种新规则决定获胜的选手。
他们将参赛选手从1编号到N并围成一圈,从第一个人开始报数,
报到4的人退出,下一个人从 1 开始重新报数,报到4 的人退出。
如此循环,直到留下最后一个人,他就是获胜者。比如输入5----->得出1
时间:2017年10月10日17:38:36
17:38:48
*/
int main()
{
int N; //编号N 总共有N个人参与报数
scanf("%d",&N);//键盘输入数字N
int a[N+1]; //定义了一个有N+1个元素的数组
int i;
int count=0; //定义了一个计数器
int control=0; //定义了一个控制器,下面会提到控制器的作用
for(i=0;i<=N;i++)//遍历数组
{
a[i]=1;//将数组中的每一个元素初始化为1
//目的是控制当元素为0时不参与报数
}
for(i=1;control<N-1;i++)//每当有一个编号退出时 control控制器都会加一,直到只剩一个人,循环结束
{
if(a[i]==1)//当元素还未退出时参与报数,
{
count++;//报数后计数器加一
}
if(count==4)//当元素报数为4时
{
a[i]=0;//报数为4此元素退出报数(元素标记为零)
count=0;//下一个从一开始报数
control++;//当编号报数为4时control控制器加一 ,及又多退出1人
}
if(i==N)//报数报到最后一个
{
i=0;//让他形成一个圈,重新从第一个接着报数(元素标记为0的自动不参与报数)
}
}
for(i=1;i<=N;i++)//遍历数组
{
if(a[i]==1)//找出最后一个没有报到4的,此元素的数值为1
{
printf("%d",i);//输出这个数
break;
}
}
return 0;
}
1051数字四的游戏
最新推荐文章于 2024-11-02 22:09:18 发布