算法提高 数字黑洞

时间限制:1.0s 内存限制:256.0MB

问题描述

  任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:

  1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;

  2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);

  3)求两个数的差,得到一个新的四位数(高位零保留)。

  重复以上过程,最后一定会得到的结果是6174。

  比如:4312 3087 8352 6174,经过三次变换,得到6174

输入格式

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

输出格式

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

样例输入

4312

样例输出

3

import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int sum=0;
int max=0;
int min=0;
String s=in.next();
while(true)
{
int a[]=new int[4];
for(int i=0;i<4;i++) {
a[i]=s.charAt(i)-'0';
}
Arrays.sort(a);
max=a[3]*1000+a[2]*100+a[1]*10+a[0];
min=a[0]*1000+a[1]*100+a[2]*10+a[3];
s=(max-min)+"";
sum++;
if(Integer.valueOf(s)==6174)
break;
}
System.out.println(sum);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class 数字黑洞 {
static void swap(int[] s,int a,int b){s[a]^=s[b];s[b]^=s[a];s[a]^=s[b];}
static void pxD(int[] s){
for (int i = 0; i < s.length; i++) {
for (int j = 3; j >0; j--) {
if(s[j]>s[j-1])swap(s, j-1, j);
}
}
}
static void pxX(int[] s){
for (int i = 0; i < s.length; i++) {
for (int j = 3; j >0; j--) {
if(s[j]<s[j-1])swap(s, j-1, j);
}
}
}
static void print(int[] s){
for (int i = 0; i < s.length; i++) {
System.out.print(s[i]);
}System.out.println();
}
static int[] jian(int[]s,int[] s1){
int[] a=new int[4];
for (int i = 0; i < a.length; i++) {
a[i]=s[i]-s1[i];
}
for (int i = 3; i>0; i--) {
if(a[i]<0){a[i]+=10;a[i-1]--;}
}return a;
}
static boolean pd(int[] s){
if(s[0]==6&&s[1]==1&&s[2]==7&&s[3]==4)return true;
return false;
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String a=bf.readLine();
int[] s=new int[4];
int[] s1=new int[4];
for (int i = 0; i < 4; i++) {
s[i]=a.charAt(i)-'0';
s1[i]=s[i];
} int c=0;
while (!pd(s)) {
pxD(s);
pxX(s1);
s=jian(s, s1);
for (int i = 0; i < s1.length; i++) {
s1[i]=s[i];
}
c++;
}
System.out.println(c);
} }

Java实现 蓝桥杯VIP 算法提高 数字黑洞的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 最长字符序列

    算法提高 最长字符序列 时间限制:1.0s 内存限制:256.0MB 最长字符序列 问题描述 设x(i), y(i), z(i)表示单个字符,则X={x(1)x(2)--x(m)},Y={y(1)y( ...

  2. Java实现 蓝桥杯VIP 算法提高 身份证排序

    算法提高 身份证排序 时间限制:1.0s 内存限制:256.0MB 问题描述 安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序.身 ...

  3. Java实现 蓝桥杯VIP 算法提高 计算器

    算法提高 计算器 时间限制:1.0s 内存限制:256.0MB [问题描述] 王小二的计算器上面的LED显示屏坏掉了,于是他找到了在计算器维修与应用系学习的你来为他修计算器. 屏幕上可以显示0~9的数 ...

  4. Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨

    算法提高 特殊的质数肋骨 时间限制:1.0s 内存限制:256.0MB 问题描述 农民约翰母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是 ...

  5. Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...

  6. Java实现 蓝桥杯VIP 算法提高 交换Easy

    算法提高 交换Easy 时间限制:1.0s 内存限制:512.0MB 问题描述 给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列. 输入格式 第一行为序列的大小N(1< ...

  7. Java实现 蓝桥杯VIP 算法提高 彩票

    算法提高 彩票 时间限制:1.0s 内存限制:256.0MB 问题描述 为丰富男生节活动,贵系女生设置彩票抽奖环节,规则如下: 1.每张彩票上印有7个各不相同的号码,且这些号码的取值范围为[1, 33 ...

  8. Java实现 蓝桥杯VIP 算法提高 阮小二买彩票

    算法提高 阮小二买彩票 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否 ...

  9. Java实现 蓝桥杯VIP 算法提高 棋盘多项式

      算法提高 棋盘多项式   时间限制:1.0s   内存限制:256.0MB 棋盘多项式 问题描述 八皇后问题是在棋盘上放皇后,互相不攻击,求方案.变换一下棋子,还可以有八车问题,八马问题,八兵问题 ...

随机推荐

  1. [hdu4713 Permutation]DP

    题意:将一个数拆成若干数的和使得它们的最小公倍数最大 思路:一个数x可以拆成p1k1 + p2k2 + ... + pnkn形式,其中pi是质数或1.对于最小公倍数最大的情况,一定可以表示成这种形式. ...

  2. 豹子安全-注入工具-显错注入-asp_POST_显错_SQLServer_GetWebShell

    豹子安全-注入工具-显错注入-SQL Server-上传WebShell 请看下列视频 . 该视频在停留10秒钟后开始. 或点击此处查看:豹子安全-注入工具-asp_POST_显错_SQLServer ...

  3. javascript----放大模式

    放大模式 1.介绍:放大模式降低模块之间直接的联系,降低耦合,当一个模块出现错误,不会影响另一个模块的功能

  4. router-link传参

    果然还好是一小部分一小部分记录的好. <router-link :to="info">中:to特性可以是路径str,也可以是一个对象形式str. 当info是对象时可以 ...

  5. mysql小白系列_01 原理

    1.什么是MVCC?有什么作用? Multi-Version Concurrency Conrol 多版本并发控为解决数据库并发读写可能会出现不一致数据的情况,需要实现数据库的并发访问控制,写时复制产 ...

  6. jquery live 区别

    http://www.360doc.com/content/13/1222/22/14022539_339358149.shtml 开始的时候在jQuery.1.7.1中使用了.live()觉得很好用 ...

  7. 让SpringBoot自动化配置不再神秘

    本文若有任何纰漏.错误,还请不吝指出! 注:本文提到的Spring容器或者Bean容器,或者Spring Bean容器,都是指同一个事情,那就是代指BeanFactory.关于BeanFactory, ...

  8. Java方法的定义以及调用、方法重载、可变参数以及递归

    目录 何谓方法 方法的定义及调用 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于 ...

  9. Golang源码学习:调度逻辑(一)初始化

    本文所使用的Golang为1.14,dlv为1.4.0. 源代码 package main import "fmt" func main() { fmt.Println(" ...

  10. elasticsearch7.X x-pack破解

    简介: x-pack是elasticsearch的一个收费的扩展包,将权限管理,警告,监视等功能捆绑在一个易于安装的软件包中,x-pack被设计为一个无缝的工作,但是你可以轻松的启用或者关闭一些功能. ...