算法提高 ADV-170 数字黑洞
2017-09-13 21:41
274 查看
问题描述
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后一定会得到的结果是6174。
比如:4312 3087 8352 6174,经过三次变换,得到6174
输入格式
一个四位整数,输入保证四位数字不全相同
输出格式
一个整数,表示这个数字经过多少次变换能得到6174
样例输入
4312
样例输出
3
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
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); } }
相关文章推荐
- 蓝桥杯 ADV-170算法提高 数字黑洞
- 蓝桥杯 算法提高 数字黑洞
- 蓝桥杯 算法提高VIP 数字黑洞(Java解题)
- 算法提高 数字黑洞
- 算法提高 数字黑洞
- 算法提高 数字黑洞
- 算法提高 数字黑洞
- 算法提高 数字黑洞
- 算法提高 ADV-101 断案
- 蓝桥杯-算法提高(ADV-143 扶老奶奶过街)
- 蓝桥杯 ADV-110 算法提高 温度转换
- 蓝桥杯 ADV-78 算法提高 最长单词
- 蓝桥杯 ADV-15算法提高 最大乘积
- 蓝桥杯ADV-17算法提高 统计单词数
- 蓝桥杯 ADV-118 算法提高 3-2字符串输入输出函数
- ADV-74-算法提高-计算整数因子
- ADV-95-算法提高-字符串比较
- 蓝桥杯 ADV-210 算法提高 2-1屏幕打印
- 蓝桥杯 ADV-197 算法提高 P1001
- 蓝桥杯 ADV-175 算法提高 三个整数的排序