PAT(B) 1019 数字黑洞(Java)
题目链接:1019 数字黑洞 (20 point(s))
分析
- 输入正整数
n后,将n转成int型数组nArr[4] - 用
Arrays.sort(int[] a)方法将数组nArr非递减排序 - 很显然,非递减排序得到的是最小值,非递增排序得到的是最大值
- 不需要再用排序方法将
nArr进行非递增排序,直接逆序“组合”即可。具体见代码 - 当相减的差
result为6174或者0时,结束do - while循环
/**
* Score 20
* Run Time 118ms
* @author wowpH
* @version 1.2
*/
import java.util.Arrays;
import java.util.Scanner;
public class Main {
// 非递减,最小值
// 非递增,最大值
// 最大值最小值相减的结果
private int minN, maxN, result;
private int[] nArr;// 数组类型的n
public Main() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();// 输入正整数n
sc.close();
nArr = new int[4]; // 4位
result = n;
do {
step();
} while (6174 != result && 0 != result);// 结束条件
}
private void step() {
// 转成数组类型
for (int i = 3; i >= 0; i--) {
nArr[i] = result % 10;
result /= 10;
}
Arrays.sort(nArr); // 非递减排序
minN = maxN = 0;
for (int i = 0; i < 4; i++) {
minN = minN * 10 + nArr[i]; // 顺序转成最小值
}
for (int i = 3; i >= 0; i--) {
maxN = maxN * 10 + nArr[i]; // 逆序转成最大值
}
result = maxN - minN; // 结果
outputStep(); // 输出当前步骤的减法算式
}
// 输出每一步
private void outputStep() {
if (0 == result) {
System.out.println(maxN + " - " + minN + " = 0000");
} else {
System.out.printf("%04d - ", maxN);
System.out.printf("%04d = ", minN);
System.out.printf("%04d\n", result);
}
}
public static void main(String[] args) {
new Main();
}
}
版权声明:
- 转载请于首页注明链接形式的PAT(B) 1019 数字黑洞(Java)——wowpH;
- 代码原创,公开引用不能删除首行注释(作者,版本号,时间等信息);
- 如果有疑问欢迎评论留言,尽量解答。
PAT(B) 1019 数字黑洞(Java)的更多相关文章
- PAT乙级 1019. 数字黑洞 (20)
1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...
- PAT 乙级 1019 数字黑洞 (20) C++版
1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...
- 【PAT】1019 数字黑洞 (20)(20 分)
1019 数字黑洞 (20)(20 分) 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做, ...
- PAT 乙级 1019.数字黑洞 C++/Java
题目来源 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有 ...
- PAT Basic 1019 数字黑洞 (20 分)
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有“数字黑洞 ...
- 牛客网 PAT 算法历年真题 1009 : 1019. 数字黑洞 (20)
1019. 数字黑洞 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定任一个各位数字不完全相同的4 ...
- PAT-乙级-1019. 数字黑洞 (20)
1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...
- P 1019 数字黑洞
转跳点:
- PAT——1019. 数字黑洞
给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有“数字黑洞”之称的6174 ...
随机推荐
- MySql通过Data恢复数据库数据
公司的服务器开不了机,把硬盘装在其他机器上面,文件是没有丢失,可是数据库开不了了.上网查了下,用DATA恢复了数据. 1.先通过MYSQL目录下的my.ini配置文件找到 datadir的文件夹地址. ...
- 使用tmate快速分享你的终端会话
tmate 的意思是 teammates,它是 tmux 的一个分支,并且使用相同的配置信息(例如快捷键配置,配色方案等).它是一个终端多路复用器,同时具有即时分享终端的能力.它允许在单个屏幕中创建并 ...
- NOIP1999提高组 题解报告
T1 导弹拦截 题目大意:依次有\(n\) (\(n \le 10^5\))枚导弹,一套导弹拦截系统只能拦截一系列高度递减的导弹(一套系统拦截的弹道不一定相邻).求一套系统最多能拦截多少导弹,以及最少 ...
- ICEMCFD中,face裂缝修复的小窍门【转载】
转载自:http://blog.sina.com.cn/s/blog_4a21884b010005ng.html 采用ICEMCFD画网格的初学者,都对由cad(proe/ug/solidworks) ...
- What is the yield keyword used for in C#?
What is the yield keyword used for in C#? https://stackoverflow.com/a/39496/3782855 The yield keywor ...
- python3.6+pycharm+robotframework 环境搭建
参考文档:https://www.cnblogs.com/chenyuebai/p/8359577.html, https://www.cnblogs.com/jiyanjiao-702521/p/9 ...
- Random Projection
Random Projection在k-means的应用 1. 随机投影 (Random Projection) 首先,这是一种降维方法.之前已经介绍过相对普遍的PCA的降维方法,这里介绍另一种降 ...
- Android Studio创建Module-库模块
Android Studio创建Module-库模块 本文链接:https://blog.csdn.net/niuba123456/article/details/81049676 模块是源文件和 ...
- 5.7版本mysql查询报错:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:...this is incompatible with sql_mode=only_full_group_by
先瞧下日志: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException ...
- java 虚拟机类加载 及内存结构
http://www.jb51.net/article/105920.htm https://www.cnblogs.com/Qian123/p/5707562.html Java类加载全过程 一个j ...