IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【Java】Pat乙级_1019满分(附2、3、4测试点) -> 正文阅读

[Java知识库]【Java】Pat乙级_1019满分(附2、3、4测试点)

1、测试点 2 、3、4

Pat乙级_1019的题目我就不写上来了,大家都有题目,我想要说的就是测试点2、3、4,这个巨坑。

题目上说是 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。

后面的输入格式又是:输入给出一个?(0,10000)?区间内的正整数?N。

就是这里巨坑,我原本理解的是,它给的测试点的数字都是 4 位的,就没考虑如果一开始给定的数字位数小于 4,这导致我测试点 2、3、4 一直过不去!!!

后来我又仔细的看了题目,终于发现了,于是在开始接收的时候就判断位数,不足添0,就直接满分了。

2、另一个坑点

在运行的过程中,可能会出现 999 的情况,这个时候还要给它补上 0 ,要不然就会出现下标越界的情况,比如说给定数字 1112,2111-1112=999,这个时候就要补 0 了

最后附上本人的代码,若是超时多提交几次,我现在是可以得到满分——Java是真的容易超时,不适合做算法题,但是我还是要说

Java 是世界上最好的语言!!!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

/**
 * @ClassName Main
 * @Description TODO 数字黑洞——我有预感这道题又会超时,很烦
 * @date 2021/8/21 17:35
 * @Author ZY
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputNum = br.readLine();
        while (inputNum.length() != 4){
            inputNum = "0" + inputNum;
        }
        // 直接将String类型拆分成Character数组
        Character[] characters = new Character[4];
        characters[0] = inputNum.charAt(0);
        characters[1] = inputNum.charAt(1);
        characters[2] = inputNum.charAt(2);
        characters[3] = inputNum.charAt(3);

        if (characters[0]==characters[1]&&characters[0]==characters[2]&&characters[0]==characters[3]){
            System.out.println(inputNum + " - " +inputNum + " = " + "0000");
            return;
        }

        String flag = "";
        while (!"6174".equals(flag)){
            String[] action = action(characters);
            System.out.println(action[0] + " - " + action[1] + " = " + action[2]);
            flag = action[2];
        }
    }

    public static String[] action(Character[] characters){
        String[] nums = new String[3];
        // 升序
        Arrays.sort(characters);
        String num1= String.valueOf(characters[0])+String.valueOf(characters[1])
                +String.valueOf(characters[2])+String.valueOf(characters[3]);
        // 降序
        Arrays.sort(characters,Collections.reverseOrder());
        String num2= String.valueOf(characters[0])+String.valueOf(characters[1])
                +String.valueOf(characters[2])+String.valueOf(characters[3]);

        // 相减
        String num3 = Integer.parseInt(num2)-Integer.parseInt(num1) + "";
        while (num3.length()!=4){
            num3 = "0" + num3;
        }
        nums[0] = num2;
        nums[1] = num1;
        nums[2] = num3;

        // 将新的数字键入charters数组
        characters[0] = num3.charAt(0);
        characters[1] = num3.charAt(1);
        characters[2] = num3.charAt(2);
        characters[3] = num3.charAt(3);


        return nums;
    }
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:25:20  更:2021-08-24 15:26:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 1:01:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码