凤
凤舞九天
Unregistered / Unconfirmed
GUEST, unregistred user!
假设有一种细胞,从出生后第3秒起每秒(发育成熟了)都产生一个新细胞,后代细胞长到第三秒后也一样,每秒又分裂一只细胞,假如所有细胞的寿命固定为100秒,问从第1个细胞出生后的第N秒,总共存在多少个细胞?
前100秒内,cell只增不减,序列如下,第n项的值等于(n-1)+(n-2):
1 2 3 4 5 6 7 8 9 10……秒数
1 1 2 3 5 8 13 21 34 55……Cell Number Per Second
大致实现如下:
//CellNumber是用户输入的数值
function TForm1.CellSum(CellNumber: Integer): Integer;
var
N1,N2,Temp,i: Integer;
begin
N1 := 1;
N2 := 1;
Temp := 1;
for i := 3 to CellNumber do
begin
Temp := N2+N1;
N2 := N1;
N1 := Temp;
end;
Result := Temp;
end;
100秒后,cell开始死亡,假设101秒作为细胞减少的头一秒:
101 102 103 104 105 106……秒数
1 0 1 1 2 3……cell died number per second
接上面函数,未贴出详细代码
if (CellNumber = 103) or (CellNumber = 101) then
begin
Result := Temp-1;
exit;
end;
if CellNumber >= 104 then
begin
Result := Temp-(CellNumber-103);
exit;
end;
请各位大侠给看看,分析是否正确,小鸟在这里万分感激了。
另外本算式的计算结果无穷大,我使用Int64,到达103之后数据就开始溢出,出现负值。请问还有别的比Int64更大数据类型吗?
前100秒内,cell只增不减,序列如下,第n项的值等于(n-1)+(n-2):
1 2 3 4 5 6 7 8 9 10……秒数
1 1 2 3 5 8 13 21 34 55……Cell Number Per Second
大致实现如下:
//CellNumber是用户输入的数值
function TForm1.CellSum(CellNumber: Integer): Integer;
var
N1,N2,Temp,i: Integer;
begin
N1 := 1;
N2 := 1;
Temp := 1;
for i := 3 to CellNumber do
begin
Temp := N2+N1;
N2 := N1;
N1 := Temp;
end;
Result := Temp;
end;
100秒后,cell开始死亡,假设101秒作为细胞减少的头一秒:
101 102 103 104 105 106……秒数
1 0 1 1 2 3……cell died number per second
接上面函数,未贴出详细代码
if (CellNumber = 103) or (CellNumber = 101) then
begin
Result := Temp-1;
exit;
end;
if CellNumber >= 104 then
begin
Result := Temp-(CellNumber-103);
exit;
end;
请各位大侠给看看,分析是否正确,小鸟在这里万分感激了。
另外本算式的计算结果无穷大,我使用Int64,到达103之后数据就开始溢出,出现负值。请问还有别的比Int64更大数据类型吗?