最大关键数查找

54 阅读1分钟

问题描述

小M拿到了一些整数,他定义“关键数”为至少能被其一位数字整除的数。换句话说,如果一个数的某一位数字可以整除该数本身,则称该数为关键数。

现在,给定一个整数 N,小M想从 1 到 N 的所有整数中找到一个最大的关键数,并返回它。

例如,当 N 为 499 时,最大的关键数是 496,因为 496 可以被其十位数字 4 整除。


测试样例

样例1:

输入:N = 499
输出:497

样例2:

输入:N = 1000
输出:1000

样例3:

输入:N = 785
输出:785

public class Main {
    public static int solution(int N) {
        // PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE
        // write code here
        int i=N,tmp,num;

        while(i>0){
            if(isHzNhnz(i)){
                System.out.println("  ===");
                return i;
            }
            tmp=i;
            while(tmp>0){
               num=tmp%10;
               tmp/=10;
               if(num==0){
                   continue;
               }
               if(i%num==0){
                   return i;
               }
            }
            i--;
        }
        return 0;
    }

    //判断是否是全是最高位非零,其他是0的情况
    public static boolean isHzNhnz(int num){
        int count=0,tmp;
        while(num>0){
            tmp=num%10;
            num/=10;
            if(tmp!=0){
                count++;
            }
        }
        System.out.println(count);
        if(count==1){
            return true;
        }
        return  false;
    }

    public static void main(String[] args) {
        System.out.println(solution(499) == 497);
        System.out.println(solution(1000) == 1000);
        System.out.println(solution(785) == 785);
    }
}