算法提高 数字黑洞

问题描述

  任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
  1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
  2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
  3)求两个数的差,得到一个新的四位数(高位零保留)。
  重复以上过程,最后一定会得到的结果是6174。
  比如:4312 3087 8352 6174,经过三次变换,得到6174

输入格式

  一个四位整数,输入保证四位数字不全相同

输出格式

  一个整数,表示这个数字经过多少次变换能得到6174

样例输入

4312

样例输出

3

 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.Scanner;
 6
 7 class Main{
 8     static int sum;
 9     public static void main(String[] args) {
10         Scanner input = new Scanner(System.in);
11         String temp = input.next();
12         StringBuffer s = new StringBuffer(temp);
13         while(!s.toString().equals("6174")){
14             char[] a = s.toString().toCharArray();
15             Arrays.sort(a);
16             s = new StringBuffer(String.valueOf(a));
17             int h = Integer.parseInt(s.reverse().toString())-Integer.parseInt(s.reverse().toString());
18             s = new StringBuffer(h+"");
19             while(s.length()!=4){
20                 s.append("0");
21             }
22             sum++;
23         }
24         System.out.println(sum);
25
26     }
27 }
时间: 2024-11-07 01:39:52

算法提高 数字黑洞的相关文章

C语言 · 数字黑洞

算法提高 数字黑洞 时间限制:1.0s   内存限制:256.0MB 问题描述 任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数: 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位): 3)求两个数的差,得到一个新的四位数(高位零保留). 重复以上过程,最后一定会得到的结果是6174. 比如:4312 3087 8352 6174,

算法笔记_163:算法提高 最大乘积(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式 第一行一个数表示数据组数 每组输入数据共2行: 第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15, 第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4. 输出格式 每组数据输出1行,为最大的乘积. 样例输入 15 51 2 3 4 2 样例输出 48 2 解决方案 具体代码如下: import java.uti

蓝桥杯 算法提高 8皇后&#183;改 -- DFS 回溯

  算法提高 8皇后·改   时间限制:1.0s   内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 28 29 30 31 3233 34 35 36 37 38 39 4041 42 43 44 45 46 47 48

蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】

算法提高 12-1三角形 时间限制:1.0s   内存限制:256.0MB 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的周长.面积.中心和重心.输入三个点,输出这三个点构成的三角形的周长.面积.外心和重心.结果保留小数点后2位数字. 样例输出 与上面的样例输入对应的输出.例: 数据规模和约定 输入数据中每一个数的范围. 例:doule型表示数据. 题目链接: http://lx.lanqiao.cn/problem.page?gpid

蓝桥杯- 算法提高 最大乘积

算法提高 最大乘积 时间限制:1.0s   内存限制:512.0MB 问题描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式 第一行一个数表示数据组数 每组输入数据共2行: 第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15, 第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4. 输出格式 每组数据输出1行,为最大的乘积. 样例输入 15 51 2 3 4 2 样例输出 48 #include<iostream&

1501181723-蓝桥杯-算法提高 最大乘积

算法提高 最大乘积 时间限制:1.0s   内存限制:512.0MB 问题描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? 输入格式 第一行一个数表示数据组数 每组输入数据共2行: 第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15, 第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4. 输出格式 每组数据输出1行,为最大的乘积. 样例输入 15 51 2 3 4 5 样例输出 120 解题思路 将输入的数据存入数组然后做升序

C语言 &#183; 矩阵相乘 &#183; 算法提高

算法提高 矩阵相乘 时间限制:1.0s   内存限制:256.0MB 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的. 小明希望你来帮他完成这个任务. 现在给你一个ai行aj列的矩阵和一个bi行bj列的矩阵, 要你求出他们相乘的积(当然也是矩阵). (输入数据保证aj=bi,不需要判断) 输入格式 输入文件共有ai+bi+2行,并且输入的所有数为整数(long long范围

1019. 数字黑洞 (20)

时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 10899810 - 0189 = 9621962

网易2017校招内推笔试练习卷编程题1--1019.数字黑洞20

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到 一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞"之称的6174,这个神奇的数字也叫Kaprekar常数. 例如,我们从6767开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 ... ... 现给