有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法生成一个范围内的所有Kaprekar数

虽然问题似乎很简单,但问题是:-

Kaprekar数是一个正整数n和d位数,这样当我们把它的平方分成两部分时——一个右手部分r和d位数,另一个左手部分l包含剩余的d或d位数−1位,各部分之和等于原始数字(即l+r=n)。 任务 给出了两个正整数p和q,其中p小于q。编写一个程序来确定p和q之间(包括p和q)有多少Kaprekar数,并将它们全部显示出来

输入格式

将有两行输入:p、最低值q和最高值

限制条件:

0<p<q<100000

输出格式

输出给定范围内的每个Kaprekar数,空格分隔在一行上。如果给定范围内不存在Kaprekar编号,则打印无效范围

我无法清除范围内的测试用例

22223
99999

在上述范围内,应生成以下数字:-

77778 82656 95121 99999

这是我的代码:-

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner scan = new Scanner(System.in);
        int p = scan.nextInt();
        int q = scan.nextInt();
        boolean exist = false;
        if(q <= p){
            System.out.println("INVALID RANGE");
        }
        int m = 0,n = 0;
        long sqr = 0;
        String numb = "";
        String[] digits = new String[2];
        for(int i = p; i <= q; i++){
            if(i == 1)System.out.print(1 + " ");
            else{
            sqr = i*i;
            numb = String.valueOf(sqr);// Changing it into a string.
            if(numb.length() % 2 == 0){
                digits[0] = numb.substring(0, numb.length()/2);//Splitting it into two parts
                digits[1] = numb.substring(numb.length()/2);
            }else{
                digits[0] = numb.substring(0, (numb.length() - 1)/2);
                digits[1] = numb.substring((numb.length() -1)/2);
            }
              if(digits[0] == "" )
                  m = 0;
              if(digits[1] == "")
                  n = 0;
              if(!digits[1].equals("") && !digits[0].equals("")){
              m = Integer.parseInt(digits[0]);
              n = Integer.parseInt(digits[1]);
              }  
            if(i == (m + n) ){ //Testing for equality
                System.out.print(i + " ");
                exist = true;
            }
        }
      }
        if(exist == false){// If exist is never modified print Invalid Range.
            System.out.println("INVALID RANGE");
        }
    }
}

共 (0) 个答案