当前位置: 代码迷 >> 综合 >> HDU--2085
  详细解决方案

HDU--2085

热度:55   发布时间:2023-12-12 06:07:56.0

某核反应堆有两类事件发生:
高能质点碰击核子时,质点被吸收,放出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
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#define LL long long
using namespace std;
const int maxa=35;
LL high[maxa],low[maxa];
void init(){high[0]=1,low[0]=0;//n=0;high[1]=3,low[1]=1;//n=1; for(int i=2;i<=33;i++){ high[i]=3*high[i-1]+2*low[i-1];low[i]=high[i-1]+low[i-1]; } //n>=2
}
int main(){init();int n;while(scanf("%d",&n)!=EOF&&n!=-1){printf("%lld, %lld\n",high[n],low[n]);}return 0;
}