问题描述
小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);
}
}