请问各路大神100的阶乘的各个位数之和怎么求?比如10的阶乘是3628800,那我要求的结果是3+6+2+8+8+0+0=27
请问各路大神(用java)100的阶乘的各个位数之和怎么求?比如10的阶乘是3628800,那我要求的结果是3+6+2+8+8+0+0=27,有没有那种不用算出100!而直接得出其各个位之和的方法,小弟在这谢过各位大神了
------解决方案--------------------使用java.math.BigDecimal类,可以处理大数据
------解决方案--------------------import java.math.BigInteger;
public class Test_12 {
public static void main(String[] args) {
final BigInteger[] heap = new BigInteger[101];
heap[0]=BigInteger.valueOf(1);
for(int i=1;i<=100;i++){
heap[i] = heap[i-1].multiply(BigInteger.valueOf(i));
}
String value = heap[100].toString();
int sum = 0;
for(int i=0;i<value.length();i++){
sum += value.charAt(i)-'0';
}
System.out.println(sum);
}
}
648
------解决方案--------------------import java.util.Arrays;
import java.util.Date;
public class yelin2 {
public static void main(String[] agrs){
int[] s = new int[200];
s[0]=1;
int k,j,result,p=0,q,res=0;
double stadate=System.nanoTime();
for(k=2;k<=100;k++)
{
q=0;
result=0;
for(int i=0;i<200;i++)
{
result=s[i]*k+q;
s[i]=result%10;
q=result/10;
if(q==0&&s[i+1]==0&&i>=p)
{
p=i;break;
}
}
}
System.out.println(Arrays.toString(s));
for(j=0;j<200;j++)
{
res=s[j]+res;
}
System.out.println(res);
double enddate=System.nanoTime();
System.out.println(enddate-stadate);
}
}