万悪の大数の問題を解決する
2220 ワード
:arrow:
コンピューターの知能指数は限られているので、私の知能指数は大丈夫です.
ほほほ大数の問題はずっと私を困らせて私の身の回りの学友だけではありませんacmの問題もずっと大きい木の問題がありますほほほ
実はjavaの中でとっくに既成の解決方法がありました
Javaのmathのパッケージの下にBigIntegerとBigDecimalの2つのクラスがあります.
ここでは,データ構造の観点から1次元配列も大数の問題を解決できる.
次のように
実行結果は次のとおりです.
------配列で大数の問題を解決------
検査対象:nを求める!の値
input the n=
35
35!= 10333147966386144929666651337523200000000
コンピューターの知能指数は限られているので、私の知能指数は大丈夫です.
ほほほ大数の問題はずっと私を困らせて私の身の回りの学友だけではありませんacmの問題もずっと大きい木の問題がありますほほほ
実はjavaの中でとっくに既成の解決方法がありました
Javaのmathのパッケージの下にBigIntegerとBigDecimalの2つのクラスがあります.
ここでは,データ構造の観点から1次元配列も大数の問題を解決できる.
次のように
# /**
# * ***********CopyRight**************
# *-------Powered by QianXunNet-----
# *-----Version 1.1 2009-01-22-----
# *----- Design BY NiChao -----
# *^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# */
package array;
import java.util.*;
public class nc030 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
int[] date=new int[100]; // 40
date[1]=1;
int weishu=1; //
System.out.println("------ ---------");
System.out.println(" : n! ");
System.out.println("input the n=");
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
int i=1;
for(i=1; i<=n;i++){
for(int j=1;j<=weishu;j++)
date[j]=date[j]*i;
for(int j=1;j<=weishu;j++ )
{
if(date[j]>=10) // // , 。
for(int r=1;r<=weishu;r++)
{
if(date[weishu]>=10)
weishu++;
date[r+1]=date[r+1]+date[r]/10; //
date[r]=date[r]%10;
}
}
}
System.out.print(i-1+"!= ");
for(int k=weishu;k>=1;k--)
{
System.out.print(date[k]);
}
System.out.println("");
}
}
実行結果は次のとおりです.
------配列で大数の問題を解決------
検査対象:nを求める!の値
input the n=
35
35!= 10333147966386144929666651337523200000000