1019

本文分享了一段Java代码,旨在验证6174猜想,即Kaprekar常数的计算过程。作者在在线测试平台遭遇扣分困扰,怀疑平台存在对Java语言的兼容性问题。代码通过比较数字及其逆序数的差值,直至达到6174或重复循环。但代码仅考虑了三位数的情况,未涵盖两位数和一位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个在线测试平台可能真的有问题,或者说对java选手太不友好了,写出来的明明没问题,就是扣我6分!

package com.company;

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();

        bgm:for (int i=0;;i++){
            n=order(n);
            if (n==reverse(n)){
                System.out.println(n+" - "+n+" = 0000");
                break bgm;
            }else{
                if (n>reverse(n)){
                    if (reverse(n)<1000){
                        System.out.println(n+" - 0"+reverse(n)+" = "+(n-reverse(n)));
                    }else{
                        System.out.println(n+" - "+reverse(n)+" = "+(n-reverse(n)));
                    }

                    n=n-reverse(n);
                    order(n);
                    if (n==6174){
                        break bgm;
                    }
                }
                else{
                    if (n<1000){
                        System.out.println(reverse(n)+" - 0"+n+" = "+(reverse(n)-n));
                    }else {
                        System.out.println(reverse(n)+" - "+n+" = "+(reverse(n)-n));
                    }

                    n=reverse(n)-n;
                    order(n);
                    if (n==6174){
                        break bgm;
                    }
                }
            }

        }

    }
    //排序
    public static int order(int number){
        char[] arr=String.valueOf(number).toCharArray();
        int[] n=new int[arr.length];
        for (int i=0;i<arr.length;i++){
            n[i]=Integer.parseInt(arr[i]+"");
        }
        Arrays.sort(n);
        int num=n[0]+n[1]*10+n[2]*100+n[3]*1000;
                return num;
    }
    //倒转
    public static int reverse(int number){
        int a=number/1000;
        int b=(number-a*1000)/100;
        int c=(number-a*1000-b*100)/10;
        int d=number-a*1000-b*100-c*10;
        int num=d*1000+c*100+b*10+a;
        return num;
    }
}

 只考虑三位数了,二位数,个位数没考虑

转载于:https://www.cnblogs.com/zhuzehua/p/9742443.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值