• 奇数位丢弃


    对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。

    输入描述:

    每组数据一行一个数字,为题目中的n(n小于等于1000)。

    输出描述:

    一行输出最后剩下的数字。

    输入例子:

    500

    输出例子:

    255

    分析:题目意思就是说,输入500,那么就要从0到500中不断奇数位丢弃

    import java.util.Scanner; 
    public class Printer2 {
     public static void main(String[] args){   
      Scanner scan = new Scanner(System.in);
      while(scan.hasNext()){ 
       int n = scan.nextInt(); 
       int[] list = new int[n + 1];
       for(int i = 0 ; i <= n ; i++){
        list[i] = i;//把每个数据的位都赋值给一个新的数组里面。
       } 
       int length = list.length;  
       while(length > 1){
        int index = 0;
        for(int i = 0 ; i < length ; i++){     
         if(i % 2 != 0){
          //复制有效数据生成新数据
          list[index++] = list[i];      
         }
        }
        length = index;//把每轮筛选下来的数据,再进行遍历
       }
       System.out.println(list[0]);//list[0]表示最后剩下的数,因为上面的while循环的条件是length>1
      }
      scan.close();
        }
    }
    

      

  • 相关阅读:
    2019 SDN第六次作业
    第07组 Beta冲刺(2/4)
    第07组 Beta冲刺(1/4)
    2019 SDN第5次作业
    SDN课程阅读作业(2)
    第08组 Beta版本演示
    第08组 Beta冲刺(4/4)
    第08组 Beta冲刺(3/4)
    第08组 Beta冲刺(2/4)
    第08组 Beta冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5862004.html
Copyright © 2020-2023  润新知