原始问题:
小红的完美数问题:数组中选两元素乘积为完美数的不同取法计数(JAVA实现)
解析:首先需要遍历数组中的每个元素,然后判断该元素是否为完美数。如果是完美数,则在结果中添加两个元素的组合。最后返回结果的数量。
代码如下:
import java.util.ArrayList;
import java.util.List;
public class PerfectNumber {
public static void main(String[] args) {
int[] arr = {5000, 4, 1, 10, 200};
System.out.println("共有 " + countWays(arr) + " 种不同的取法");
}
public static int countWays(int[] arr) {
List<Integer> perfectNumbers = new ArrayList<>();
for (int num : arr) {
if (isPerfectNumber(num)) {
perfectNumbers.add(num);
}
}
return countCombinations(perfectNumbers);
}
public static boolean isPerfectNumber(int num) {
int sum = 0;
int temp = num;
while (temp > 0) {
int digit = temp % 10;
if (digit != 0) {
sum += digit;
}
temp /= 10;
}
return sum == num;
}
public static int countCombinations(List<Integer> perfectNumbers) {
int n = perfectNumbers.size();
int result = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
result++;
}
}
return result;
}
}
Prev:行政岗位适应性情况