关闭

算法提高 ADV-170 数字黑洞

标签: java数据结构算法蓝桥杯
180人阅读 评论(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
查看评论

蓝桥杯 ADV-170算法提高 数字黑洞

问题描述 任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位); 3)求两个...
  • liuchuo
  • liuchuo
  • 2016-07-22 00:12
  • 494

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

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

蓝桥杯 算法提高 数字黑洞

算法提高 数字黑洞   时间限制:1.0s   内存限制:256.0MB      问题描述   任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:   1)将组成该四位数的四个数字由大到...
  • weixin_40124642
  • weixin_40124642
  • 2017-10-06 15:21
  • 82

蓝桥杯 算法提高 数字黑洞

运用了C++ 算法库中的sort函数,要写两个cmp,记得高位补零 ac代码如下 #include #include #include #include using namespace std; int b[4]; int ans=0; bool cmp1(int a,i...
  • qq_36783389
  • qq_36783389
  • 2017-12-27 23:36
  • 42

Java - PAT - 1019. 数字黑洞 (20)

1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非...
  • qq_34594236
  • qq_34594236
  • 2016-05-16 08:11
  • 1551

算法提高 数字黑洞

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

数字黑洞6174

给定一个任意不完全相同的4位数,列如6767 则7766-6677=1089 9810-0189=9621 9621-1269=8352 8532-2358=6174 #include using namespace std; void dd(int n) { ...
  • u014689802
  • u014689802
  • 2016-08-02 10:49
  • 353

PAT 乙级 1019. 数字黑洞 (C++版)

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

黑洞数字495

 对一个三位都不相同的三位数,记它各个位上的数字为a,b,c,不妨设a>b>c 则第一次运算得:100a+10b+c-(100c+10b+a)=99(a-c) 即99的一个倍数 由于a>b>c ∴a≥b+1≥c+2 ∴a-c≥2 ∴第一次运算后,可能得到...
  • QQ1449301756
  • QQ1449301756
  • 2014-10-05 10:25
  • 662

【C++】浙大PAT (Basic Level)1019. 数字黑洞 (20)

1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序...
  • artemisrj
  • artemisrj
  • 2014-01-31 12:06
  • 1476
    个人资料
    • 访问:19915次
    • 积分:1685
    • 等级:
    • 排名:千里之外
    • 原创:156篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条