7-28
一群猴子要选新猴王. 新猴王的选择方法是: 让 N 只候选猴子围成一圈, 从某位置起顺序编号为 1~N 号. 从第 1 号开始报数, 每轮从 1 报到 3, 凡报到 3 的猴子即退出圈子, 接着又从紧邻的下一只猴子开始同样的报数. 如此不断循环, 最后剩下的一只猴子就选为猴王. 请问是原来第几号猴子当选猴王?
输入格式:
输入在一行中给一个正整数 N(1000).
输出格式:
在一行中输出当选猴王的编号.
输入样例:
11
输出样例:
7
AC 代码
- #include<stdio.h>
- int main(){// 用对列应该好做, 那么现在不会队列, 怎么办呢?
- int hou[1000];
- int num;
- scanf("%d",&num);
- for(int i=1;i<=num;i++){
- hou[i]=1;
- }
- int baoshu=0;
- int chuju=0;
- int i=1;
- while(i){
- if(hou[i]==1)
- baoshu++;
- if(baoshu==3){
- hou[i]=0;
- baoshu=0;
- chuju++;
- if(chuju==num){
- printf("%d",i);
- break;
- }
- }
- i++;
- if(i==num+1)
- i=1;
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2674727.html