斐波那契 FREE PASCAL菲波那契数列(fbnq.pas)菲波列为1,1,2,3,5,8,13,21,…其元素产生的规则是前两个数为1,从第三个数开始,每个数等于它前面两个数之和.输入n(n
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/31 11:29:16
斐波那契 FREE PASCAL菲波那契数列(fbnq.pas)菲波列为1,1,2,3,5,8,13,21,…其元素产生的规则是前两个数为1,从第三个数开始,每个数等于它前面两个数之和.输入n(n
斐波那契 FREE PASCAL
菲波那契数列(fbnq.pas)
菲波列为1,1,2,3,5,8,13,21,…其元素产生的规则是前两个数为1,从第三个数开始,每个数等于它前面两个数之和.输入n(n
斐波那契 FREE PASCAL菲波那契数列(fbnq.pas)菲波列为1,1,2,3,5,8,13,21,…其元素产生的规则是前两个数为1,从第三个数开始,每个数等于它前面两个数之和.输入n(n
直接用高精就行了
压8位的话 30000能在1s内出解的
type arr=array[0..10000]of longint;
var a:array[0..1]of arr;
n,i,w:longint;
procedure jia(b,c:longint);
var j,x:longint;
begin
x:=0;
for j:=1 to a[c,0] do
begin
a[b,j]:=a[b,j]+a[c,j]+x;
x:=a[b,j] div 100000000;
a[b,j]:=a[b,j] mod 100000000;
end;
if x>0 then begin a[b,0]:=a[c,0]+1; a[b,a[b,0]]:=x; end
else a[b,0]:=a[c,0];
end;
begin
readln(n);
a[0,1]:=1; a[1,1]:=1;
a[0,0]:=1; a[1,0]:=1;
w:=0;
for i:=3 to n do
begin
jia(w,1-w);
w:=1-w;
end;
write(a[1-w,a[1-w,0]]);
for i:=a[1-w,0]-1 downto 1 do
if a[1-w,i]>9999999 then write(a[1-w,i])
else if a[1-w,i]>999999 then write('0',a[1-w,i])
else if a[1-w,i]>99999 then write('00',a[1-w,i])
else if a[1-w,i]>9999 then write('000',a[1-w,i])
else if a[1-w,i]>999 then write('0000',a[1-w,i])
else if a[1-w,i]>99 then write('00000',a[1-w,i])
else if a[1-w,i]>9 then write('000000',a[1-w,i])
else write('0000000',a[1-w,i]);
writeln;
end.