解题思路与“幂的数字和”一样
C#
#include <stdio.h>
int main(){
int mul[400] = {0};
mul[0] = mul[1] = 1;
for(int i =1;i <=100; i++){
for(int j =1;j <= mul[0];j++){
mul[j] *= i;
}
for(int j = 1;j <= mul[0]; j++){
if(mul[j] < 10) continue;
mul[j+1] += mul[j] / 10;
mul[j] %= 10;
mul[0] += (mul[0] == j);
}
}
printf("%d\n",mul[0]);//存放位数
int ans = 0;
for(int i = 1;i <= mul[0]; i++){
ans += mul[i];
}
printf("%d\n",ans);//各位数字之和
return 0;
}
Java
package exercise;
import java.math.BigInteger;
public class _阶乘数字和 {
public static void main(String[] args) {
int sum=0;
BigInteger n = new BigInteger(fal(100));
System.out.println(n);
String str = n+"";
String[] str1 = str.split("");
for(int i =0;i<str1.length;i++) {
sum += Integer.parseInt(str1[i]);
}
System.out.println(sum);
}
private static String fal(int count) {
BigInteger result = new BigInteger(String.valueOf(1));
for(int i=1;i<=count;i++) {
BigInteger i_value = new BigInteger(String.valueOf(i));
result = result.multiply(i_value);
}
return result.toString();
}
}
结果:648