hdu 2085 java 核反應堆

YX_blog發表於2015-08-18

點選開啟連結

核反應堆

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12201    Accepted Submission(s): 5537


Problem Description
某核反應堆有兩類事件發生:
高能質點碰擊核子時,質點被吸收,放出3個高能質點和1個低能質點;
低能質點碰擊核子時,質點被吸收,放出2個高能質點和1個低能質點。
假定開始的時候(0微秒)只有一個高能質點射入核反應堆,每一微秒引起一個事件發生(對於一個事件,當前存在的所有質點都會撞擊核子),試確定n微秒時高能質點和低能質點的數目。
 

Input
輸入含有一些整數n(0≤n≤33),以微秒為單位,若n為-1表示處理結束。
 

Output
分別輸出n微秒時刻高能質點和低能質點的數量,高能質點與低能質點數量之間以逗號空格分隔。每個輸出佔一行。
 

Sample Input
5 2 -1
 

Sample Output
571, 209 11, 4


解題思路:這題很簡單,只要用陣列將兩個搞定能量分開放,分開計算就可

        AC程式碼

package cn.hncu.acm;

import java.util.Scanner;

public class p2085 {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		while(sc.hasNext()){
			int n=sc.nextInt();
			if(n==-1){
				break;
			}
			long a[]=new long[n+1];//用來放高能量
			long b[]=new long[n+1];//低能
			a[0]=1;b[0]=0;
//			a[1]=3;b[1]=1;
			for(int i=1;i<=n;i++){
				a[i]=a[i-1]*3+b[i-1]*2;//按要求計算,二者分開後就很好運算了
				b[i]=a[i-1]+b[i-1];
			}
			System.out.println(a[n]+", "+b[n]);
		}
	}

}


相關文章