C语言~猴子选大王

猴子选大王

#include<stdio.h>
int main()
{    
int n,num[2000],i,start,cnt;    
scanf("%d",&n);   
for(i=0;i<n;i++)   
   {        
 	 num[i]=i+1;   
   }   
    start=0;
    cnt=0;
    int m=n;    
    while(m>1)    
    {        
   	 m--;       
     	 while(cnt<3)       
      	 {            
      		if(num[start]!=0)
       		cnt++;           
        	if(cnt==3)        
           	{                
            		num[start]=0;           
                }             
              	start=(start+1)%n;       
         }       
                cnt=0;   
    }   
    for(i=0;i<n;i++)  
    {       
    	if(num[i]!=0) printf("%d",num[i]);   
    }   
        return 0;
}

输入n,然后对num数组赋初值,即下标为i的元素的编号为i+1
start=0,从编号为1的元素开始报数,一共循环n-1次,由于n不能改变,所以先把n的值赋给m,然后通过下面的while循环,找出报数为3的元素并出列(如果start的值大于0,就让cnt加1,如果cnt=3,则让start的元素值为0)
start=(start+1)%n是为了使数组num变成一个循环数组
遍历数组,找出唯一一个非0值即为猴王,输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值