被 90 整除的数
1、题目要求
2、代码思路
能被 90
整除数,满足如下两个特征
- 各位数字之和是
9
的倍数 - 个位数是
0
将如上信息带入到本题的条件中,每张卡片要么是 0
,要么是 5
,要想拼凑出来的正数能被 90
整除,首先必须满足个位有 0
,然后高位靠 5
来凑数,并且 5
的个数必须为 9
的整数倍,然后将剩余的零放在低位,即为答案
3、代码实现
代码
/**
* @ClassName MaxNumDemo
* @Description TODO
* @Author Heygo
* @Date 2020/9/3 19:32
* @Version 1.0
*/
public class MaxNumDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
int numsCount = Integer.parseInt(line);
int[] nums = new int[numsCount];
line = scanner.nextLine();
String[] splitStrs = line.split(" ");
for (int i = 0; i < splitStrs.length; i++) {
nums[i] = Integer.parseInt(splitStrs[i]);
}
String maxNum = maxNum(nums);
System.out.println(maxNum);
}
/**
* 求能被 90 整除的数
* @param nums
* @return
*/
public static String maxNum(int[] nums) {
// 统计 5 和 0 的个数
int countOfFive = 0;
int countOfZero = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 5) {
countOfFive++;
} else {
countOfZero++;
}
}
// 个位没有 0,不可能被 90 整除
if (countOfZero == 0) {
return "-1";
}
// 5 的个数不满 9 个,能被 90 整除的最大值为 0
if( countOfFive / 9 == 0){
return "0";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < countOfFive / 9; i++) { // 5 个 9 为一组拼接
sb.append("555555555");
}
for (int i = 0; i < countOfZero; i++) { // 低位补零
sb.append("0");
}
return sb.toString();
}
}