zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 筛选号码

    算法训练 筛选号码

    Description

    有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。

    问最后留下的是原来第几号的那位。

    举个例子,8个人围成一圈:

    1 2 3 4 5 6 7 8

    第1次报数之后,3退出,剩下:

    1 2 4 5 6 7 8 (现在从4开始报数)

    第2次报数之后,6退出,剩下:

    1 2 4 5 7 8 (现在从7开始报数)

    第3次报数之后,1退出,剩下:

    2 4 5 7 8 (现在从2开始报数)

    第4次报数之后,5退出,剩下:

    2 4 7 8 (现在从7开始报数)

    第5次报数之后,2退出,剩下:

    4 7 8 (现在从4开始报数)

    第6次报数之后,8退出,剩下:

    4 7 (现在从4开始报数)

    最后一次报数之后,4退出,剩下:

    7.

    所以,最后留下来的人编号是7。

    Input

    输入描述:

    一个正整数n,(1<n<10000)

    输入样例:

    8

    Output

    输出描述:

    一个正整数,最后留下来的那个人的编号。

    输出样例:

    7

    import java.util.Scanner;
    
    
    public class 筛选号码 {
    
    	 
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		int n = in.nextInt();
    		int[] a = new int[n+1];
    		int t=0;
    		int win=0;
    		while(true)
    		{
    			for(int i=1;i<=n;i++)
    			{
    				if(a[i]!=1)
    					t++;			
    				if(t%3==0)
    					a[i]=1;
    			}
    //			for(int i=1;i<=n;i++)
    //			{
    //				if(a[i]!=1)
    //					System.out.print(i+" ");
    //			}
    //			System.out.println();
    			int s=0;
    			for(int i=1;i<=n;i++)
    			{
    				if(a[i]==0)
    				{
    					s+=1;
    					win=i;
    				}
    			}	
    			if(s==1)
    				break;
    		}
    		System.out.println(win);
    		
    	}
    
    
    }
    
    
  • 相关阅读:
    HDU 5486 Difference of Clustering 图论
    HDU 5481 Desiderium 动态规划
    hdu 5480 Conturbatio 线段树 单点更新,区间查询最小值
    HDU 5478 Can you find it 随机化 数学
    HDU 5477 A Sweet Journey 水题
    HDU 5476 Explore Track of Point 数学平几
    HDU 5475 An easy problem 线段树
    ZOJ 3829 Known Notation 贪心
    ZOJ 3827 Information Entropy 水题
    zoj 3823 Excavator Contest 构造
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13079261.html
Copyright © 2011-2022 走看看