#11116: 「關鍵時刻」不能用遞迴解,g(n)會超過int的範圍所以要用long記錄和計算


smart70094 (Scorpius)

學校 : 國立雲林科技大學
編號 : 55629
來源 : [118.171.189.79]
最後登入時間 :
2017-01-26 01:39:25
a216. 數數愛明明 | From: [36.235.198.214] | 發表日期 : 2016-06-30 14:51

Java Code      ~ share

 

import java.util.*;

public class test{
public static Map map=new HashMap<Integer,Integer>();
public static int count=0;
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int n=scanner.nextInt();
map.put(1, 1);
System.out.println(f(n)+" "+g(n));
}
}
public static long f(int n){
for(int i=2;i<=30000;i++){
map.put(i, i+(int)map.get(i-1));
}
return (int)map.get(n);
}
public static long g(int n){
long[] intArr=new long[30001];
intArr[1]=1;
int t;
long t2;
long sum;
for(int i=2;i<=30000;i++){
t=(int)map.get(i);
t2=intArr[i-1];
sum=t+t2;
intArr[i]=sum;
}
return intArr[n];
}
}

 
ZeroJudge Forum