被 90 整除的数

tech2024-10-18  24

被 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(); } }
最新回复(0)