• PAT乙级_继续3n+1猜想


    1  题目要求

              https://www.patest.cn/contests/pat-b-practise/1005

    2  源代码

    import java.util.ArrayList;
    import java.util.Arrays;
    import  java.util.Scanner;
    public class Main {
      public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
      
        int[] array1 = new int[n];
        
        for(int i=0;i<n;i++) {
          array1[i]=input.nextInt();
        }
        
        ArrayList<Integer> list1 = new ArrayList<Integer>();
        
        
        for(int indexa:array1) {
          while(indexa!=1) {
            if(indexa%2==0) {
              indexa=indexa/2;
            }else {
              indexa=(3*indexa+1)/2;
            }
              list1.add(indexa);
          }
        }
        
        ArrayList<Integer> list2 = new ArrayList<Integer>();
           for(int indexb:array1) {
             if(!list1.contains(indexb)) {
               list2.add(indexb);
             }
           }
           
             int m = list2.size();
             int[] array2 = new int[m];
          
             for(Integer j:list2) {
               array2[--m]=j.intValue();
             }
              Arrays.sort(array2);
              for(int k=array2.length-1;k>=1;k--) {
                System.out.print(array2[k]+" ");
              }
                  System.out.println(array2[0]);
      }       
    }
    View Code

     3  评测结果

           

    4    思路 

               1     定义一个数组,把第二行输入的数用数组接收

               2     将第二行输入的数放在数组里

               3     定义一个集合,for循环遍历数组,对数组每一个数进行逻辑判断,得到的结果放在集合list1中

               4     遍历数组,和list1比较,如果相同, 就放在list2中,得到关键数

               5     将list2转化成数组,排序,输出

      5    注意点

               1  做这题时,一开始输出格式不对,要求最后一个数后不能有空格!

               2  不能有注释,否则会出现编译错误,这也是考试时候需要注意的!别代码调试好了,运行没问题,但是一提交各种错误!

               3   这题难点在于 题意比较难理解,集合如何转换成数组,数组如何添加到集合中,这里用到了Interger的intvalue方法,将集合中的元素转化为整型赋给数组

    int a = new Integer("2").intValue();
    int b = new Integer(3).intValue();
    System.out.println(a+1);
    System.out.println(b+1);    

                    这是从integer转向int 的时候会用到intValue;

  • 相关阅读:
    null和undefined的区别
    减少页面加载时间的方法
    html5有哪些新特性、移除了那些元素?
    cookies,sessionStorage 和 localStorage 的区别
    小程序页面
    快速保存网页图片的工具
    Flex 布局教程
    第一阶段:Python开发基础 day08 Python基础语法入门--列表元组字典集合类型的内置方法
    第一阶段:Python开发基础 day08 数据类型的内置方法 课后作业
    python学习第一周知识内容回顾与小结
  • 原文地址:https://www.cnblogs.com/sunnybowen/p/8522719.html
Copyright © 2020-2023  润新知