卡布列克圆舞曲JAVA代码优化 5C

import java.util.*;
public class Main {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    ArrayList<String> str = new ArrayList<String>();
    Select select = new Select();
    int i;
    String sub;
    while(input.hasNext()) {
        str.clear();
        sub = input.next();
        str.add(sub);
        i = 1;
        if(sub.equals("0")) {
            System.out.println("0");
            continue;
        }
        while(true) {
            str.add(Select.sort(sub));
            String strR = new StringBuffer(Select.sort(sub)).reverse().toString();
            sub = String.valueOf(Math.abs(Long.parseLong(str.get(i)) - Long.parseLong(strR)));
            if(!str.contains(String.valueOf(sub))) {
                str.remove(i);
                str.add(String.valueOf(sub));
                sub = Select.sort(sub);
                i++;
            }else {
                int j = str.indexOf(String.valueOf(sub));
                if(i==j+1) {
                    System.out.println(str.get(j));
                    break;
                }
                else {
                    for(; j<str.size()-2; j++) {
                        System.out.print(str.get(j) + " ");
                    }
                    System.out.println(str.get(str.size()-2));
                    break;
                }
            }
        }
    }
}

}

class Select{
public static String sort(String str){
char[] s1 = str.toCharArray();
for(int i=0;i<s1.length;i++){
for(int j=0;j<i;j++){
if(s1[i]<s1[j]){
char temp = s1[i];
s1[i] = s1[j];
s1[j] = temp;
}
}
}
String st = new String(s1);
return st;
}
}

要求输出格式不变
学校OJ拜托大佬了
题目描述
  卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。

  例如:4321-1234=3087

     8730-378=8352

     8532-2358=6174

     7641-1467=6147

  如果K位数也照此办理,它们不是变成一个数,而是在几个数字之间形成循环,称作卡布列克圆舞曲。例如对于五位数54321:

  54321-12345=41976

  97641-14679=82962

  98622-22689=75933

  97533-33579=63954

  96543-34569=61974

  97641-14679=82962

  我们把82962 75933 63954 61974称作循环节,即卡布列克圆舞曲。

输入数据
文件包含若干行,每行为一个待求“卡布列克圆舞曲”的起始整数(小于maxlongint)
输出数据
每行为对应整数的循环节,数据之间用空格隔开。


1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
VIJOS-卡布列克圆舞曲(模拟)-c++
【问题描述】   卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。例如:    4321-1234=3087     8730-378=8352     8532-2358=6174
卡布列克常数-------------用java
验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:rn1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;rn2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);rn3)求两个数的差,得到一个新的四位数(高位零保留)。rn重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数。rnrnrnrnrn谢谢
卡布列克常数的java实现
Test83.java 此题来源为 廖永鹏的 贵阳面试题. 主要目的考算法. [quote]C语言趣味程序百例精解之JAVA实现(83):卡布列克常数 http://blog.csdn.net/dearbaba2011/article/details/6927515 [/quote] 有改进 [code=&quot;java&quot;] package interviewTest; im...
卡布列克常数
问题:卡布列克常数 题目描述最近,小Q在数学兴趣课中了解了“卡布列克常数”。卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数和一个最小的数,然后用最大数减去最小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。 例如:4321-1234=3087 8730-378=8352 853...
卡布列克运算 C++
验证卡布列克运算。 任意一个四位数,只要它们各个位置上的数字是不完全相同的,就有这样的规律: (1) 将组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; (2) 将组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位); (3) 求两个数之差,得到一个新的四位数。 (4) 重复以上过程,最后得到的结果总是6174。
demo04---卡布列克常数
任意一个不是用完全相同数字组成的四位数, 如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数, 然后用较大数减去较小数,差不够四位数时补零,类推下去, 最后将变成一个固定的数:6174,这就是卡布列克常数。 例如:4321-1234=3087、8730-378=8352、8352-2358=6174*/这个程序里包含很多数组中常用的知识点,其中包括:排序(冒泡或选择),还有就是将一个数的...
卡布列克常数验证
就是验证它啦,希望可以帮到大家忙
我的 卡布列克
  本来是很简单的东西,结果自己想快点做完,结果反而做了很久,而且做错!。。   做得辛辛苦苦,可惜还是没做对!   本来想用list的sort 帮忙实现排序的 ,后面采用手动的冒泡排序,又加上一个苦逼的算法,结果冒泡排序那块搞错了!   错了两次,   第一次:   String[] bigger = sort(kabulekes,-1); String[] ...
验证卡布列克运算
2019.04.09 验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不尽相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位); 3)求两个数的差,得到一个新的四位数(高位零保留)。 重复以上过程...
卡布列克常数-------------用java(谢谢前辈)
验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: rn1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; rn2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位); rn3)求两个数的差,得到一个新的四位数(高位零保留)。 rn重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数
验证三位卡布列克常数
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入一个三位数,要求三位不能全相同:"); int num=input.nextI
C# 求素数/卡布列克运算
1. 用循环求1~100之间的所有素数,显示并输出结果。 using System; usingSystem.Collections.Generic; using System.Linq; using System.Text;   namespace Q1 {     class Program     {         static void Main(string[] a...
卡布列克运算希望帮助,
调试了半天,都没调试出来,希望能帮助下!谢谢[code=c]#includernint zuhe(int a[4],int n)rnrn int i,j,t;rn for(i=0;i<4;i++)rn rn a[i]=n%10;rn n=n/10;rn rn /* for(i=0;i<3;i++)//冒泡rn for(j=i+1;j<4;j++)rn if(a[i]a[j+1])rn rn t=a[j];rn a[j]=a[j+1];rn a[j+1]=t;rn rn return 1;rnrnint getmin(int n)rnrn int a[4];rn int s=0;rn int i,j,t;rn zuhe(a,n);rn for(i=3;i>=0;i--)rn rn t=1;rn for(j=0;j
问题G:卡布列克常数
                         问题G:卡布列克常数 时间限制:1秒内存限制:128 MB 提交:489解决:288 [ 提交 ] [ 状态 ] [ 讨论版 ] [命题人:admin ] 题目描述 最近,小Q在数学兴趣课中了解了“卡布列克常数”卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数和一...
卡布列克常数(string类运用)
卡布列克常数 时间限制: 1 Sec  内存限制: 128 MB 题目描述 最近,小Q在数学兴趣课中了解了“卡布列克常数”。卡布列克是一位数学家,他在研究数字时发现:任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数和一个最小的数,然后用最大数减去最小数,差不够四位数时补零,类推下去,最后将变成一个固定的数:6174,这就是卡布列克常数。 例如:4321-...
实验2-2 C#实现卡布列克运算
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace kblk { class Program { static void Main(string[] args) ...
C/C++卡布列克运算验证
#include<iostream> using namespace std; int main(void) { int sortmax(int); int sortmin(int); int i; int num; cout<<"请输入一个四位数:\n"; cin>>num; int a,b,c,f
验证卡布列克运算(带详细的运算分析资料)
任意一个四位数,只要他们各个位置上的数字不全相同,就有这样的规律:(1)将组成这个四位数的四个数由大到小排列,形成由这四个数字构成的最大的四位数;(2)将组成这个四位数的四个数由小到大排列,形成由这四个数构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);(3)求两个数之差,得到一个新的四位数。(4)重复以上过程,最后得到的结果总是6174。
java:C201_06_05验证卡布列克数
任意一个不是用完全相同数字组成的三位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够三位数时补零,类推下去,最后将变成一个固定的数:495,这就是三位卡布列克常数 package _06_第六章函数; import java.util.Scanner; public class C201_06_05验证卡布列克数 { public st...
卡布列克 运行出错可以帮忙改改不
#includernvoid kblk(int);rnvoid parse_sort(int num,int*array);rnvoid max_min(int*array,int*max,int*min);rnvoid parse_sort(int num,int *array);rnint count=0;rnint main()rnrn int n;rn printf("please enter a four bit integer:");rn scanf("%d",&n);rn kblk(n);rnrnvoid kblk(int num)rnrn int array[4],max,min;rn if(num!=6174&&num)rn rn parse_sort(num,array);rn max_min(array,&max,&min);rn num=max-min;rn printf("[%d]:%d-%d=%d",++count,max,min,num);rn kblk(num);rnrn rnrnvoid parse_sort(int num,int*array)rnrn int i,*j,*k,temp;rn for(i=0;i<4;i++)rn rn j=array+3-i;rn *j=num%10;rn num/=10;rn rnrn for(i=0;i<3;i++)rn for(j=array,k=array+1;j*k)rn rn temp=*j;rn *j=*k;rn *k=temp;rnrn rn rn return;rnrnvoid max_min(int *array,int *max,int*min)rnrn int*i;rn *min=0;rn for(i=array;i=array;i--)rn *max=*max*10+*i;rn return;rnrnrn
Java代码优化
1、尽量释放无用对象的引用。 对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为\"不可达的\".GC将负责回收所有\"不可达\"对象的内存空间。 Public void test(){ Object obj = new Object(); …… Obj=null; } 上面这个就没必要了,随着方法
java代码优化
优化,不仅仅是在运行环境进行优化,还需要在代码本身做优化,如果代码本身存在性能问题,那么在其他方面再怎么优化也不可能达到效果最优的。 1、尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建,速度较慢。另外,栈中创建的变量,随着方法的运行结束,这些内容就没了,不需要额外的垃圾回收。 2、尽量减少对变量的重复计算...
JAVA代码优化
一、类、方法、变量尽量指定final修饰 public static void test(){ final String x=&amp;amp;amp;quot;1&amp;amp;amp;quot;; final String y=x+&amp;amp;amp;quot;2&amp;amp;amp;quot;; String z=x+y; System.out.println(z); } 二、字符串拼接背后不一定是StringBuilder、上面代码没有用StringBuilde
Java代码优化....................
java代码优化 个人感觉这写的不错. 值得学习!
C# 实现卡布列克数
卡布列克是指任意一个四位数,只要他们各个位上的数字不相同,有这样的规律。 一、把组成这个四位数的各个数字从大到小排列,组成一个最大的四位数。 二、把组成这个四位数的各个数字从小到大排列,组成一个最小的四位数。 三、求出以上两个数字之差,得到一个新的四位数,重复上述过程,最后得到的结果为6174.称这样的数字为卡布列克数using System; using System.Collections
java代码优化笔记
java代码开发代码优化整理笔记,仅供大家学习交流,如有侵权请尽快联系小编,如有不足,可发表评论,谢谢
java 高并发代码优化(一)
大背景: 项目是一个 spring cloud 项目,其实这个无所谓,普通的 web 项目也是可以的,这里只是为了 方便模拟   先看一个常见的场景 , 一个controller 中调用了 其他系统的服务接口 代码如下: 其实就是 一个接口 ,发送了 两个 http 请求 ,然后将运行时间返回 性能分析, 线程是从上到下执行,两个方法 resultList 返回了 ,方法 ruleLi...
java代码优化大全
可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。
关于java代码优化
最近看网上一些代码优化的文章,发现自己确实有很多地方做的不够好,这里简单的列出我经常忽略的几条代码优化不够的地方
关于java的代码优化!
1)rnString s[] = "123456".split("");rn int a = s.length;rn for(int i =0;i
java 循环代码优化
[code=java]rn List AL=new ArrayList();rn List issuesAll = new ArrayList();rn //此次略去N行代码给issuesAll和issuesAll赋值rn issuesAll = IssueDao.fromResultSet(resultAll);rn AL= xxxxx;rn rn //issuesAll.size()=154345rn //AL.size()=35678434 rn //下面的两层嵌套循环总次数太多,请问各位有没有办法提高效率????rn //由于AL.size()远远大于issuesAll.size(),能否用多个进程并行????代码怎么写??rn for(int j=0;j
java代码优化简介
可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身。养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。 .....
android优化之java代码优化
在《Android应用性能优化》一书中,作者将android优化分为以下几个方面:java代码优化,内存优化,布局优化,电量优化。 那么本文将介绍该书中几种确保java应用在Android设备上获得高性能的方法。首先,android不用java虚拟机(VM)来执行代码,而是靠Dalvik虚拟机。java代码首先被编译成java字节码,然后被编译成Dalvik字节码。 我们以熟悉的斐波拉契数列为例
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数