关闭

算法提高 ADV-170 数字黑洞

标签: java数据结构算法蓝桥杯
161人阅读 评论(0) 收藏 举报
分类:
问题描述
  任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
  1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
  2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
  3)求两个数的差,得到一个新的四位数(高位零保留)。
  重复以上过程,最后一定会得到的结果是6174。
  比如:4312 3087 8352 6174,经过三次变换,得到6174
输入格式
  一个四位整数,输入保证四位数字不全相同
输出格式
  一个整数,表示这个数字经过多少次变换能得到6174
样例输入
4312
样例输出
         3

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		ArrayList<Integer> al = new ArrayList<Integer>();
		int count = 0;
		while(n!=6174){
			for(int i=0;i<4; i++){
				al.add(n%10);
				n = n/10;
			}
			Collections.sort(al);
//			System.out.println(al.get(3)+" "+al.get(2)+" "+al.get(1)+" "+al.get(0));
			n = al.get(3)*1000+al.get(2)*100+al.get(1)*10+al.get(0)-(
					al.get(0)*1000+al.get(1)*100+al.get(2)*10+al.get(3));
			al.clear();
			count++;
		}
		System.out.println(count);
	}
}



0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

算法提高 数字黑洞

问题描述   任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:   1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;   2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位)...
  • ReidSC
  • ReidSC
  • 2017-05-18 11:37
  • 150

算法游戏-黑洞数(java实现)

首先描述一下什么是黑洞数,黑洞数又称陷阱数,是类具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。 java实现代码如下: public class Test2...
  • u010559672
  • u010559672
  • 2016-07-07 21:04
  • 1049

算法提高 数字黑洞

问题描述   任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:   1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;   2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);   ...
  • qq_29656961
  • qq_29656961
  • 2017-01-17 14:16
  • 126

蓝桥杯基础 数论 黑洞数

黑洞数是指于四位数中,只要数字不完全相同,将数字由大到小的排列减去由小到大的排列。假设一开始选定的数字为,=f(),=f(),...,=f() 用同样的规则继续算下去,最后的结果一定是6174。 比如说一开始选定9891,则f(9891)=9981-1899=8082,f(8820)=882...
  • Strokess
  • Strokess
  • 2016-05-01 18:17
  • 2020

蓝桥杯 黑洞数 解题报告

任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。 比如,刚才的数字会落入:[82962...
  • wr132
  • wr132
  • 2015-02-22 21:49
  • 613

数字黑洞:任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到 * 一个最大的数:65432,一个最小的数23456。

/* * 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到 * 一个最大的数:65432,一个最小的数23456。 * 求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。 * 如此往复,数字会落入某个循环圈(称为数字黑洞)。 ...
  • hanshileiai
  • hanshileiai
  • 2013-03-31 14:42
  • 7048

【python学习笔记】1:黑洞数和啤酒问题

这学期刚开始接触python,觉得python的确很强大,特别是在序列的处理上。虽然以后未必会用得上太多,还是要好好学一下。基于已经有了编程语言基础,python的学习还是以边做题边学习语法较好,毕竟这学期这门课的名字也是python计算。   黑洞数是指这样的整数:由这个数字每位上的数字...
  • SHU15121856
  • SHU15121856
  • 2017-03-31 14:56
  • 1761

PAT 1019. 数字黑洞

1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一...
  • August12138
  • August12138
  • 2017-12-17 11:18
  • 43

1019. 数字黑洞 (20)

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 例如,我们从6767开始,将得到 7766 ...
  • iking83
  • iking83
  • 2016-06-25 16:06
  • 112

1019. 数字黑洞 (20)

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 例如,我们从6767开始,将得到 7766 ...
  • qq_26570353
  • qq_26570353
  • 2016-05-05 11:19
  • 663
    个人资料
    • 访问:15529次
    • 积分:1643
    • 等级:
    • 排名:千里之外
    • 原创:156篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条