andy6804tw
8/18/2016 - 2:23 AM

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1161 這題是算出階層後每一個位數的總和最大測資有1000階層會爆所以要利用大數運算

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 月 */
}