https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1161
這題是算出階層後每一個位數的總和最大測資有1000階層會爆所以要利用大數運算動態配置儲存1000筆資料 叫出每一個位數BigInteger先變成字串toString( )再拆成字元陣列toCharArray( ) 注意當0!輸出1
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
BigInteger arr[]=new BigInteger[1001];
arr[1]=new BigInteger("1");arr[0]=new BigInteger("1");
for(int i=2;i<=1000;i++){
arr[i]=arr[i-1].multiply(new BigInteger(Integer.toString(i)));
}
while(scn.hasNext()){
int num=scn.nextInt(),sum=0;
char ary[]=arr[num].toString().toCharArray();
for(int i=0;i<ary.length;i++)
sum+=ary[i]-'0';
System.out.println(sum);
}
}
/*
題目:Q10220 - I Love Big Numbers !
作者:1010
時間:西元 2016 年 8 月 */
}