请问各路大神(用java)100的阶乘的各个位数之和怎么求?比如10的阶乘是3628800,那我要求的结果是3+6+2+8+8+0+0=27,有没有那种不用算出100!而直接得出其各个位之和的方法,小弟在这谢过各位大神了
解决方案 »
- java类型转换
- 菜鸟关于Swing JButton和Java3D结合的一个问题
- 对于进度条的无奈,请进来看看
- >>>> 请教用jawind如何获取dll中方法的返回值? <<<<
- 求教简单计算器问题
- 小弟对下面程序的输出结果实在想不明白,请大家多多指教
- 50分请各位高手过来帮我一个忙.
- 如何在JTree的初始化过程中打开那个子目录呢?(象资源管理器一样)
- 初学者,,求救。。
- CSDN的高手都到哪去了?!!! 再不解决,小弟要跳楼了。。。。在线等待
- Java 如何解释STL文件 (3D立体打印用)
- 用的包是itext和PDFReadererpdf转图片时总是报错java.io.IOException: Unknown CMap: UniGB-UCS2-H
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.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);
}
}
把biginteger 里面的方法拆出来,效率应该能提升提升多少就不好说了
还有你电脑啥配置?我用递归算1W的阶乘也只是427ms 是不是该考虑升级一下了