zoukankan      html  css  js  c++  java
  • 6174问题

    描述

    假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数

    比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4

     
    输入
    第一行输入n,代表有n组测试数据。
    接下来n行每行都写一个各位数字互不相同的四位数
    输出
    经过多少次上面描述的操作才能出现循环
    样例输入
    1
    1234
    样例输出
    4

     1 import java.util.Arrays;
     2 import java.util.Scanner;
     3 
     4 public class Main {
     5     public static void main(String[] args) {
     6         Scanner scanner=new Scanner(System.in);
     7         int T;
     8         int i;
     9         String string;
    10         char stringChar[]=new char[4];
    11         String compare;
    12         char compareChar[]=new char[4];
    13         int a;
    14         int b;
    15         int temp;
    16         int count;
    17         
    18         T=scanner.nextInt();
    19         for(i=0;i<T;i++){
    20             string=scanner.next();
    21             count=0;
    22             
    23             while(true){
    24                 stringChar=string.toCharArray();
    25                 Arrays.sort(stringChar);
    26                 a=stringChar[0]+stringChar[1]*10+stringChar[2]*100+stringChar[3]*1000;
    27                 b=stringChar[0]*1000+stringChar[1]*100+stringChar[2]*10+stringChar[3];
    28                 
    29                 temp=a-b;
    30                 
    31                 compareChar[0]=(char)(temp/1000+'0');
    32                 compareChar[1]=(char)(temp/100%10+'0');
    33                 compareChar[2]=(char)(temp/10%10+'0');
    34                 compareChar[3]=(char)(temp%10+'0');
    35                 
    36                 compare=new String(compareChar);
    37                 
    38                 if(compare.compareTo(string)==0)
    39                     break;
    40                 
    41                 else{
    42                     count++;
    43                     string=compare;
    44                 }
    45             }
    46             System.out.println(count+1);
    47         }
    48     }    
    49 }
    
    
    
     
  • 相关阅读:
    洛谷模板汇总
    BZOJ1787【AHOI2008】Meet紧急集合 <LCA>
    HDU3068 最长回文 <Manacher>
    UVa12345 Dynamic len(set(a[L:R])) <带修莫队>
    BZOJ2038 小Z的袜子 <莫队>
    BZOJ1103【POI2007】大都市meg <树上差分+树状数组>
    BZOJ3226【SDOI2008】校门外的区间
    BZOJ1012【JSOI2008】最大数 <线段树>
    20170918~24周总结
    BZOJ1934【SHOI2007】善意的投票 <网络流>
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4130665.html
Copyright © 2011-2022 走看看