我的 java 代码有什么问题,它没有清除所有测试?

What is the wrong with my java code, its not clearing all the tests?

虽然问题很简单。在这里:

问题陈述

密码安全是当今一个非常重要的话题。我们在这里将密码系统定义为一组要求,该系统中的有效密码必须满足这些要求。在每个这样的系统中,每个有效密码仅由数字 [0-9] 组成。此外,对于每个此类系统,有效密码必须满足两个要求:

有效密码的最短长度。

有效密码的最大长度。

我们说密码系统是安全的当且仅当该系统中有超过一百万 (106) 个不同的可能密码。作为安全专家,您的任务是确定给定的密码系统是否安全。

备注

约束条件

1≤T≤100

1≤m≤M≤10

输出格式

精确打印 T 行。如果第 i 个密码系统是安全的,则在第 i 个中打印 "YES"(不带引号),否则打印 "NO"(不带引号)。

样本输入

2
5 5
7 8

示例输出

 NO
 YES

说明

Sample Case #00

All valid passwords have length 5, hence there are exactly 100000 different passwords; this system in insecure, because we need more than a million different passwords for a system to be secure.


Sample Case #01

We are allowed to have passwords of length 7 or 8 and since there are more than a million different such passwords, this system is secure.

我的理解:由于允许重复,我们必须计算 10^m 到 10^M 并将它们相加。但是如果 M >= 6 我们不必直接计算我们可以说 "YES" 并且如果 M <= 5 我们可以直接说 "NO" 。

这是我的代码:-

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 cases = scan.nextInt();
        int minl = 0, maxl = 0;
        int sum = 0;
        for(int i = 0; i < cases; i++){
            minl = 0;
            maxl = 0;
            sum = 0;
            minl = scan.nextInt();
            maxl = scan.nextInt();
                if(maxl >= 6){
                    System.out.println("YES");
                }else if(maxl <= 5){
                    System.out.println("NO");
                }else if(minl >= 6){
                    System.out.println("YES");
                }else if((maxl - minl) >= 6){
                    System.out.println("YES");
                }else{
                for(double k = minl; k <= maxl; k++){
                    sum += Math.pow(10.0 , k);

                }

                if(sum >= 1000000){
                    System.out.println("YES" );
                }else{
                    System.out.println("NO");
                }
              }     

            }
        }
    }

并且代码未能清除所有测试。唉!

问题陈述说要打印 YES "if and only if there are more than one million different possible passwords in this system."

您的代码似乎正在检查大于或等于 if(maxl >= 6)

最简单的解决方案是:

for(int i = 0; i < cases; i++){
    minl = 0;
    maxl = 0;
    minl = scan.nextInt();
    maxl = scan.nextInt();
    if(maxl > 6 || (maxl == 6 && minl <6)){
        System.out.println("YES");
    }else {
        System.out.println("NO");
    }
}