HDU2085:核反应堆(递推)
生活随笔
收集整理的這篇文章主要介紹了
HDU2085:核反应堆(递推)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 #include?<stdio.h>?? #include?<string.h>?? #include?<algorithm>?? using?namespace?std;?? ?? __int64?a[35][2];?? ?? int?main()?? {?? ????int?i;?? ????a[0][0]?=?1;a[0][1]?=?0;?? ????a[1][0]?=?3;a[1][1]?=?1;?? ????for(i?=?2;i<=33;i++)?? ????{?? ????????a[i][0]?=?a[i-1][0]*3+a[i-1][1]*2;?? ????????a[i][1]?=?a[i-1][0]+a[i-1][1];?? ????}?? ????while(~scanf("%d",&i),i!=-1)?? ????{?? ????????printf("%I64d,?%I64d\n",a[i][0],a[i][1]);?? ????}?? ?? ????return?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
?
簡單遞推,因為后面產生的粒子數都是由前面已有的粒子通過碰撞產生
于是高能粒子:a[i][0] = a[i-1][0]*3+a[i-1][1]*2;
低能粒子:a[i][1] = a[i-1][0]+a[i-1][1];
?
[cpp]?view plaincopy總結
以上是生活随笔為你收集整理的HDU2085:核反应堆(递推)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj1028 模拟浏览器后退和前进(栈
- 下一篇: ACM训练赛--递推专题