首页 > 代码库 > 6174问题
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行每行都写一个各位数字互不相同的四位数 - 输出
- 经过多少次上面描述的操作才能出现循环
- 样例输入
11234
- 样例输出
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 }
6174问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。