反应堆有α和β两种粒子 每秒α分裂为3个β,β分裂为1个α和2个β t=0时刻只有一个α,求t时刻两种粒子个数
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
void ParticleSplitting1(int t);
void ParticleSplitting2(int t);
int main ()
{
int t = 3;
ParticleSplitting1(t);
ParticleSplitting2(t);
}
void ParticleSplitting1(int t)
{
int a[100], b[100];//代表α和β粒子
a[0] = 1;
b[0] = 0;
for(int i = 1; i <= t; i++)
{
a[i] = b[i - 1];//因此a[1]=0因为1s之后α粒子变成了3个β粒子 此时原α粒子消失
b[i] = 3 * a[i - 1] + 2 * b[i - 1];//当前时刻的β粒子是由前一时刻的α粒子和β粒子分裂而来的
}
cout << t << "s之后" << "α粒子的个数是:" << a[t] << "\n\tβ粒子的数目是:" << b[t];
}
//数学模型见书P116
void ParticleSplitting2(int t)
{//等同于exp(n)等同于e^n
int a = int(exp(t * log(3)));//log(x) 的作用就是ln(x)
int b = int(exp((t + 1) * log(3)));
if(t % 2)
{
a -= 3;
b += 3;
}
else
{
a += 3;
b -= 3;
}
a /= 4;
b /= 4;
cout << endl << t << "s之后" << "α粒子的个数是:" << a << "\n\tβ粒子的数目是:" << b;
}