zoukankan      html  css  js  c++  java
  • java实现数字黑洞

    任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到
    一个最大的数:65432,一个最小的数 23456。
    求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足 5 位,则前边补 0)。如此往复,数字会
    落入某个循环圈(称为数字黑洞)。
    比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈。
    请编写程序,找到 5 位数所有可能的循环圈,并输出,每个循环圈占 1 行。
    其中 5 位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:
    [82962,75933, 63954, 61974]其中数字的先后顺序可以不考虑。

    /*
    
    */
    package Question30_39;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Iterator;
    61
    import java.util.LinkedHashSet;
    import java.util.Scanner;
    import java.util.Set;
    public class Question30TooDifficultMustRemember{
    public static int MaxSubMin(int n) {
    StringBuffer sb=new StringBuffer(""+n);
    while (sb.length()<5) {
    sb.insert(0, '0');
    }
    char ch[]=(sb.toString()).toCharArray();
    Arrays.sort(ch);
    int 
    max=(ch[4]-'0')*10000+(ch[3]-'0')*1000+(ch[2]-'0')*100+(ch[1]-'0')*10+ch[0]-'0';
    int 
    min=(ch[0]-'0')*10000+(ch[1]-'0')*1000+(ch[2]-'0')*100+(ch[3]-'0')*10+ch[4]-'0';
    return max-min;
    }
    public static Set<Integer> blackHole(int n) {
    Set<Integer> set=new LinkedHashSet<Integer>();
    set.add(n);
    while(true){
    n=MaxSubMin(n);
    if(set.add(n)==false){
    Set<Integer>tSet=new LinkedHashSet<Integer>();
    for (Iterator iterator = set.iterator(); iterator.hasNext();) {
    Integer integer = (Integer) iterator.next();
    if(integer==n){
    break;
    }else {
    tSet.add(integer);
    }
    }
    set.removeAll(tSet);
    break;
    }
    }
    return set;
    }
    public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    // int n=scanner.nextInt();
    Set<Set<Integer>>set=new LinkedHashSet<>();
    for (int i = 10000; i < 100000; i++) {
    62
    set.add(blackHole(i));
    }
    for (Iterator iterator = set.iterator(); iterator.hasNext();) {
    Set<Integer> set2 = (Set<Integer>) iterator.next();
    System.out.println(set2);
    }
    }
    }
    
    

    运行结果:
    [0]
    [74943, 62964, 71973, 83952]
    [63954, 61974, 82962, 75933]
    [53955, 59994]

  • 相关阅读:
    Go -- 调用C/C++
    fatal error: sys/cdefs.h: No such file or directory
    ubuntu下安装go语言;sublime+gocode搭建;go的卸载和环境变量配个人.bashrc
    sqlite多表关联update
    sqlite insert select 联合使用
    sqlite3 支持的关联查询
    iOS -- 拨打电话
    lapis 项目添加prometheus 监控
    lapis 1.7.0 更好的openresty 版本兼容以及安全数据库支持
    skipper backend 负载均衡配置
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947193.html
Copyright © 2011-2022 走看看