问题描述
1!+2!+3!+…+20!
解决方案
解决方案二:
publicclassTest1{publicstaticvoidmain(Stringargs[]){longa,u,b;u=1;b=0;Stringstr=null;for(a=1;a<=20;a++){u=u*a;b=b+u;if(a==1){str=a+"!";}else{str=str+"+"+a+"!";}System.out.println(str+"="+b);}}}
解决方案三:
importjava.math.BigInteger;publicclassBig{publicstaticBigIntegersum=newBigInteger("0");publicstaticBigIntegerml_value=null;publicstaticBigIntegertemp=null;publicstaticStrings=null;publicstaticvoidmul(intn){ml_value=newBigInteger("1");for(inti=2;i<n+1;i++){s=String.valueOf(i);temp=newBigInteger(s);ml_value=ml_value.multiply(temp);}}publicstaticvoidmain(Stringargs[]){intnum=Integer.parseInt(args[0]);for(intj=1;j<=num;j++){mul(j);sum=sum.add(ml_value);}System.out.println(sum.toString());}}
解决方案四:
楼上的很犀利啊!!
解决方案五:
publicclassTestFactorial{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i<21;i++){sum=sum+calculate(i);}System.out.println(sum);}publicstaticintcalculate(intnum){if(num==1){return1;}returncalculate(num-1)*num;}}
解决方案六:
引用2楼sowhatwhocare的回复:
Javacodeimportjava.math.BigInteger;publicclassBig{publicstaticBigIntegersum=newBigInteger("0");publicstaticBigIntegerml_value=null;publicstaticBigInteger……
呵呵,满足LZ需要了;不过为n的时候(如n>1000),可能就要越界了,用StringBuffer是最好的。
解决方案七:
4楼的方法就很好啊。顶
解决方案八:
该回复于2011-04-16 08:34:32被版主删除
解决方案九:
4楼的算法没错但是欠考虑啊,这是阶乘来的一不小心就溢出了;
解决方案十:
用递归来实现,写起来比较简单,如4楼的,但开销较大
解决方案十一:
引用1楼zqfddqr的回复:
这个还真不错!JavacodepublicclassTest1{publicstaticvoidmain(Stringargs[]){longa,u,b;u=1;b=0;Stringstr=null;for(a=1;a<=20;a++){u=u*a;b=b+u;if(a=……