zoukankan      html  css  js  c++  java
  • 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    输入描述:
    一行,一个正整数n(1<=n<=1000000)。

    输出描述:
    输出答案。

    输入例子1:
    5

    输出例子1:
    4

    例子说明1:
    出局的编号依次为3,1,5,2,最后留下的是4

    //使用数组 看到100w别怕数组照样可以创建,剩下的就是模拟过程 
    #include <bits/stdc++.h>
    using namespace std;
    int num[1000000+5];
    int main(){
    	int n;
    	scanf("%d",&n);
    	int cnt=n;//目前未出局人数
    	int flag=0;//报数 
    	for(int i = 1;;i++){
    		if(i==n+1){//超过人数从1开始 
    			i=1;
    		} 
    		if(num[i]==0){//局中人报数+1 
    			flag++;
    		}else{//跳过 
    			continue;
    		} 
    		if(flag%3==0){//标记 
    			cnt--;
    			num[i]=1;
    		}
    		if(cnt==1) break;//只有一个人就退出报数游戏 
    		
    	}
    	for(int i=1;i<=n;i++){
    		if(num[i]==0){
    			printf("%d",i);
    			break;	
    		}
    	}
    	return 0;
    } 
    
  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    jenkins无需登录,查看测试任务结果,allure报告
  • 原文地址:https://www.cnblogs.com/10134dz/p/13709234.html
Copyright © 2011-2022 走看看