HDOJ 2085 核反應堆 詳細遞迴思想

2021-09-10 14:39:53 字數 1332 閱讀 6041

某核反應堆有兩類事件發生:

高能質點碰擊核子時,質點被吸收,放出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

提示可以使用long long int對付gnu c++,使用__int64對付vc6

首先,這個題乙個小條件在於開始的時候(0微秒)只有乙個高能質點射入核反應堆,遞迴那就需要開陣列了 這裡我開了a[38]和b[38]大小的兩個陣列,由那個條件可知a[0]=1; b[0]=0; 那麼開始遞迴了:

高能質點碰擊核子時,質點被吸收,放出3個高能質點和1個低能質點;

低能質點碰擊核子時,質點被吸收,放出2個高能質點和1個低能質點。

由這個條件就可以知道:第一秒就是第乙個高能指質點放出三個高和1個低(這裡我就說高低了) 那麼1-2秒又是乙個時間 分別計算高和低———高:3x3+1x2=11 低:3x1+1x1=4 那麼很顯然a[i]=a[i-1]*3+b[i-1]*2 b[i]=a[i-1]+b[i-1]

做題感受:

這個題還是充分體現了遞迴思想!寫完發現不是結果出了問題,而是後面輸出結果的格式出錯 一直報presentation error這個錯誤 後面再仔細讀題後 才發現是:高能質點與低能質點數量之間以逗號空格分隔 我居然少了乙個空格!!有的時候出點錯還是必須的,或許你們也會這裡報錯說不定哦!

對了,也有人說後面輸出格式%lld會出錯 要用%i64d輸出才行 我都試了 都a了

具體**如下:

#include

#include

#include

#include

using namespace std;

intmain()

int n;

while

(cin>>n&&n!=-1

)return0;

}

HDOJ2085 核反應堆 快速解決!!

problem description 某核反應堆有兩類事件發生 高能質點碰擊核子時,質點被吸收,放出3個高能質點和1個低能質點 低能質點碰擊核子時,質點被吸收,放出2個高能質點和1個低能質點。假定開始的時候 0微秒 只有乙個高能質點射入核反應堆,每一微秒引起乙個事件發生 對於乙個事件,當前存在的所...

杭電 2085 核反應堆

problem description 某核反應堆有兩類事件發生 高能質點碰擊核子時,質點被吸收,放出3個高能質點和1個低能質點 低能質點碰擊核子時,質點被吸收,放出2個高能質點和1個低能質點。假定開始的時候 0微秒 只有乙個高能質點射入核反應堆,每一微秒引起乙個事件發生 對於乙個事件,當前存在的所...

HDU 2085核反應堆

核反應堆 problem description 某核反應堆有兩類事件發生 高能質點碰擊核子時,質點被吸收,放出3個高能質點和1個低能質點 低能質點碰擊核子時,質點被吸收,放出2個高能質點和1個低能質點。假定開始的時候 0微秒 只有乙個高能質點射入核反應堆,每一微秒引起乙個事件發生 對於乙個事件,當...