主题:斐波拉契数列
tz_xinzhe
[专家分:200] 发布于 2008-08-28 15:14:00
各位大虾,小弟在此,急求斐波拉契数列如何用高精度算法做,一定加分!!!!![em10]
回复列表 (共10个回复)
沙发
小田甜 [专家分:3910] 发布于 2008-08-29 13:24:00
用字符串做的,到1220位
在我的机器上运行100次12.2秒
function jia(n1,n2:string):string;
var
n3:string;
i:byte;
begin
n3:='';
{-1-}if length(n1)<length(n2)
then for i:=1 to length(n2)-length(n1) do insert('0',n1,1)
else for i:=1 to length(n1)-length(n2) do insert('0',n2,1);
{-2-}for i:=length(n1) downto 1 do insert(chr(ord(n1[i])+ord(n2[i])-48),n3,1);
{-3-}for i:=length(n1) downto 1 do
if n3[i]>'9' then begin
if i=1 then insert('1',n3,1)
else n3[i-1]:=succ(n3[i-1])
end;
{-4-}for i:=1 to length(n3) do if n3[i]>'9' then n3[i]:=chr(ord(n3[i])-10);
{-5-}jia:=n3;
end;
var
a,b,c:string;
i:word;
begin
assign(output,'fbnc.txt');rewrite(output);
a:='0';b:='1';
writeln('1');
for i:=1 to 1220 do begin
c:=jia(a,b);
a:=b;b:=c;
writeln(i,':',b,' ',length(b));
end;
close(output);
end.
板凳
ninjia [专家分:10] 发布于 2008-08-31 18:15:00
非要用高精度算法吗?我有一般算法的!用吗??????????、
3 楼
游侠UFO [专家分:1200] 发布于 2008-09-09 12:05:00
- -斐波拉契就是递推吧 - -
把加法换成高精度加法就OVER了 - -
4 楼
快乐战士 [专家分:110] 发布于 2008-11-19 19:07:00
请问是前几项?
……
5 楼
黑暗中的光芒 [专家分:10] 发布于 2008-11-20 19:20:00
教科书上有的……
6 楼
日奈森亚梦 [专家分:150] 发布于 2009-04-08 20:43:00
Program wx;
var
a,b,n,i:integer;
begin
readln(n);
a:=0;
b:=1;
writeln(a); writeln(b);
for i:=1 to n-2 do
begin
a:=a+b;
b:=b+a;
end;
writeln(a);
end.
7 楼
woshizhu [专家分:30] 发布于 2009-04-15 21:08:00
你用公式:
begin
a:=a+b;
b:=b+a;
end;
write(a:5,b:5);
8 楼
angwuy [专家分:2280] 发布于 2009-04-16 17:39:00
用线性规划可以把时间复杂度降到O(lgn)
9 楼
abcwuhang [专家分:1840] 发布于 2009-05-20 16:21:00
可以用公式嘛。
an=((sqrt(5)-1)^n+(sqrt(5)+1)^n)/sqrt(5)
10 楼
hxy_anhui [专家分:320] 发布于 2009-05-23 10:52:00
var n,i:qword;
a:array[1..100000] of qword;
begin
a[1]:=1;a[2]:=2;
for i:=3 to n do
a[i]:=a[i-1]+a[i-2];
writeln(a[i]);
end.
我来回复