HDOJ原子炉2085

1813 ワード

げんしろ
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11676    Accepted Submission(s): 5307
Problem Description
ある原子炉では2つの事件が発生した.
高エネルギー質点が核子にぶつかると、質点が吸収され、3つの高エネルギー質点と1つの低エネルギー質点が放出される.
低エネルギー質点が核子にぶつかると,質点が吸収され,2つの高エネルギー質点と1つの低エネルギー質点が放出される.
開始時(0マイクロ秒)に1つの高エネルギー質点しか原子炉に入射しなかったと仮定し、各マイクロ秒に1つのイベントが発生し(1つのイベントに対して現在存在するすべての質点が核子に衝突する)、nマイクロ秒における高エネルギー質点と低エネルギー質点の数を決定してみる.
 
Input
入力はいくつかの整数n(0≦n≦33)を含み、マイクロ秒単位でnが−1であれば処理が終了する.
 
Output
nマイクロ秒時刻の高エネルギー質点と低エネルギー質点の数をそれぞれ出力し,高エネルギー質点と低エネルギー質点の数の間をカンマスペースで区切った.出力ごとに1行を占めます.
 
Sample Input

   
   
   
   
5 2 -1

 
Sample Output

   
   
   
   
571, 209 11, 4 long long int GNU C++, __int64 VC6

 
Source
2006/1/15 ACMプログラム設計期末試験
 
Recommend
lcy   |   We have carefully selected several similar problems for you:   2083  2082  2086  2079  2077 
 
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
	__int64 a[40],b[40];
	a[1]=3;b[1]=1;
	a[2]=11;b[2]=4;	
	for(int i=3;i<34;i++){
		a[i]=a[i-1]*3+2*b[i-1];
		b[i]=a[i-1]+b[i-1];
    }
	int n;
	while(scanf("%d",&n)!=EOF){
		if(n==-1)break;
		if(n==0){
			printf("1, 0
"); continue; } printf("%I64d, %I64d
",a[n],b[n]); } return 0; }