【题目】
有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。
即:abc = a! + b! + c!
请找出所有满足要求的三位数.
【分析】
因为0~9一共10个数字,所以可以提前把每个数字的阶乘都求出来存在数组中。
然后循环遍历所有的三位数,找到满足条件的数字。
【源码】
private static int[] a;
public static void main(String[] args) {
a = new int[10];
for (int i = 0; i < a.length; i++) {
a[i] = getN(i);
}
for (int i = 100; i <=999; i++) {
if(i == f(i)){
System.out.println(i);
}
}
}
//返回a每个位上的阶乘之和
private static int f(int b){
String s = String.valueOf(b);
int sum = 0;
for (int i = 0; i <s.length(); i++) {
int x = s.charAt(i)-'0';
sum += a[x];
}
return sum;
}
//返回数字a的阶乘
private static int getN(int a){
if(a == 0){
return 0;
}
int sum = 1;
for (int i = a; i > 1; i--) {
sum = sum*i;
}
return sum;
}
【结果】
145