算法提高 数字黑洞

时间限制: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. EOS基础全家桶(十一)智能合约IDE-EOS_Studio

    简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...

  2. spring test---测试SpringMvc初识

    现在越来越多人使用SpringMvc来开发系统,在开发中可定需要对后台url地址请求测试,并且返回预期的结果! Spring提供的测试类MockMvc来进行url地址请求测试,使用方方式: packa ...

  3. React:Conditional Rendering(条件渲染)

    就像JS中常常会根据条件(比如if/else.switch)返回不同的值,React中也可以根据组件的状态或其他参考条件返回不同的React Element. 比如根据用户是否登陆渲染对应的UI面板. ...

  4. 迟早要知道的JS系列之常用数组方法

    常用数组方法 一.不会改变原始数组的方法: 即访问方法,下面的这些方法绝对不会改变调用它们的对象的值,只会返回一个新的数组或者返回一个其它的期望值. 1. concat() ** 语法:** Java ...

  5. 01.drf文档及外键字段反序列化

    一 安装drf 1.1 安装库 pip install djangorestframework pip install markdown # Markdown support for the brow ...

  6. 王艳 201771010127《面向对象程序设计(java)》第十七周学习总结

    实验十七  线程同步控制 实验时间 2018-12-10 一.理论部分 1.线程同步:多线程并发运行不确定性问题解决方案:引入线程同步机制,使得另一线程要使用该方法,就只能等待. 解决方案: 1)锁对 ...

  7. BZOJ4260异或和

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 918  Solved: 420[Submit][Statu ...

  8. (上)python3 selenium3 从框架实现学习selenium让你事半功倍

    本文感谢以下文档或说明提供的参考. Selenium-Python中文文档 Selenium Documentation Webdriver 参考 如有错误欢迎在评论区指出,作者将即时更改.文章从我的 ...

  9. Java——动态生成POJO类

    package com.java.test.dynamicpojo; import java.io.ByteArrayOutputStream; import java.io.IOException; ...

  10. centos 7 vscode cmake 编译c++工程

    一.环境说明 1)gcc/g++  cmake安装建议 gcc/g++内核自带的即可,如果需要新的自行安装, cmake也一样,如有需要新的版本自行安装. 2)vscode安装插件 必要的插件c/c+ ...