ACM练习—6174问题
来源:互联网 发布:js删除json数组 对象 编辑:程序博客网 时间:2024/06/12 05:13
6174问题
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner s = new Scanner(System.in);int sum = s.nextInt(); // n组数据int[] arr = new int[sum]; int[] num = new int[sum];for (int i = 0; i < num.length; i++) {num[i]+=2;}for (int i = 0; i < sum; i++) {arr[i] = s.nextInt();}for (int i = 0; i < arr.length; i++) {int temp=0; int temp1=0;temp = retBig(arr[i]) - retBut(arr[i]);while (true) {temp1 = temp;temp = retBig(temp) - retBut(temp);if(temp == temp1){break;}num[i]++;}}for (int i = 0; i < num.length; i++) {System.out.println(num[i]);}}public static int retBig(int a){ // 求出最高位int[] arrSoft = new int[4];// 转换为char数组并从大到小排序arrSoft[0] = a/1000;arrSoft[1] = a%1000/100; arrSoft[2] = a%100/10;arrSoft[3] = a%10/1;for (int j = 1; j < 4; j++) { for (int j2 = 0; j2 < 4 -j; j2++) {if(arrSoft[j2]<arrSoft[j2+1]){int temp;temp = arrSoft[j2];arrSoft[j2] = arrSoft[j2+1];arrSoft[j2+1] = temp;}}}int temp = 1000; // char 数组转换为intint num = 0;for (int j = 0; j < arrSoft.length; j++) {num = num + arrSoft[j]*temp;temp = temp/10;}return num;}public static int retBut(int a){ // 求出最低位int[] arrSoft = new int[4];// 转换为char数组并从大到小排序arrSoft[0] = a/1000;arrSoft[1] = a%1000/100; arrSoft[2] = a%100/10;arrSoft[3] = a%10/1;for (int j = 1; j < 4; j++) { for (int j2 = 0; j2 < 4 -j; j2++) {if(arrSoft[j2]>arrSoft[j2+1]){int temp;temp = arrSoft[j2];arrSoft[j2] = arrSoft[j2+1];arrSoft[j2+1] = temp;}}}int temp = 1000; // char 数组转换为intint num = 0;for (int j = 0; j < arrSoft.length; j++) {num = num + arrSoft[j]*temp;temp = temp/10;}return num;}}
0 0
- ACM练习—6174问题
- ACM练习—素数距离问题
- ACM练习:括号配对问题
- acm练习:素数求和问题
- ACM在线练习-括号配对问题
- ACM练习3*n+1问题
- ACM练习-素数求和问题
- ACM在线练习-括号配对问题
- ACM练习—水仙花数
- ACM第一次练习—1016
- ACM第二次练习—1001
- ACM第二次练习—1002
- ACM第二次练习—1003
- ACM第二次练习—1004
- ACM第二次练习—1005
- ACM第二次练习—1008
- ACM第二次练习—1017
- ACM第二次练习—1011
- C Primer Plus 第十三章程序清单……2015.5.15
- Adobe Reader for Unix 安装(支持中文)
- html表格、表单元素、img标签、图像映射技术、html4引入flash
- 在继承中关于super的详解
- (一)四轴——PPM信号与接收
- ACM练习—6174问题
- 动态规划 求两个没交集的区间的和的最大值的范围的左边界
- 《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库
- 黑马程序员(八)网络编程
- 欢迎使用CSDN-markdown编辑器
- ACM练习—谁获得了最高奖学金
- MFC对话框风格和工程字符集的关系
- 循环链表&线性表(5.15)
- C语言学习第三天—控制流