程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 2085

HDU 2085

編輯:C++入門知識

HDU 2085


直接上題目,比較有意思。

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



提示
可以使用long long int對付GNU C++,使用__int64對付VC6

當為一秒和兩秒時,高能質點為3和11,低能質點為1和4.不難發現,可以得到如下關系。某秒的高能質點數等於它的前一秒乘3加上前一秒的低能質點數乘2.。類似可得低能質點數的關系。直接上代碼。

#include 
#include 
void solve()
{
    __int64 a[44],b[44];//數據很大,必須用__int64
	int n,i;
	while(scanf("%d",&n)!=EOF &&n!=-1)
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		a[0]=3;a[1]=11;
		b[0]=1;b[1]=4;
		for(i=2;i



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved