本文介紹了項目-歐拉–問題20的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我以為我解決了這個問題,但程序輸出”0″。我看不出有什么問題。感謝您的幫助。
問題:
n!表示n×(n?1)×…×3×2×1
例如,10!=10×9×…×3×2×1=3628800,其和
數字10中的數字!是3+6+2+8+8+0+0=27。求數字100的位數和!
package projecteuler;
public class problem20 {
public static void main(String[] args)
{
int sayi=0;
int carpim=1;
for(int i=100;i>=1;i--)
{
carpim*=i;
}
String carp=""+carpim;
int[] dizi = new int[carp.length()];
String[] dizis=new String[carp.length()];
for(int i=0;i<carp.length();i++)
{
dizis[i]=carp.substring(i);
}
for(int i=0;i<carp.length();i++)
{
dizi[i]=Integer.parseInt(dizis[i]);
sayi+=dizi[i];
}
System.out.println(sayi);
}
}
推薦答案
100!
為93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
,這超出了
int
的有效范圍(大得多)。請嘗試使用BigInteger
。為幫助您入門,
BigInteger carpim = BigInteger.ONE;
for (int i = 100; i >= 1; i--) {
carpim = carpim.multiply(BigInteger.valueOf(i));
}
System.out.println(carpim);
其輸出為前面提到的數字。
這篇關于項目-歐拉–問題20的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,