⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recur.pas

📁 PASCAL光盘资料PASCAL光盘资料PASCAL光盘资料
💻 PAS
字号:
program recur;
 {$N+}
 var
  kn,qn,f1,f0,a,b,q,k:extended;
  n,i:longint;
  f:array[0..20]of extended;
 function fang(x:extended;n:longint):extended;
  var
   t:extended;
   i:longint;
  begin
   t:=1;
   for i:=1 to n do
    t:=t*x;
   fang:=t;
  end;
 begin
  assign(input,'recur.in');
  assign(output,'recur.out');
  reset(input);rewrite(output);
  read(f0,f1,a,b,n);
  if n=1 then
   begin
    writeln(f1:0:0) ;
    close(output);halt;
   end else
  if n=0 then
   begin
    writeln(f0:0:0);
    close(output);halt;
   end ;
  q:=(a+sqrt(a*a+4*b))/2;
  k:=(-a+sqrt(a*a+4*b))/2;
  if n<1e6 then
   begin
    qn:=fang(q,n);
    kn:=fang(-k,n);
    writeln((qn*(f1+k*f0)-kn*(f1-q*f0))/(q+k):0:0);
   end else
  begin
   k:=-k;
   if abs(q-1)<1e-6 then qn:=1 else
   if abs(q+1)<1e-6 then begin if odd(n) then qn:=-1 else qn:=1; end else qn:=0;
   if abs(k-1)<1e-6 then kn:=1 else
   if abs(k+1)<1e-6 then begin if odd(n) then kn:=-1 else kn:=1; end else kn:=0;
   k:=-k;
   writeln((qn*(f1+k*f0)-kn*(f1-q*f0))/(q+k):0:0);
  end;
  close(output);
 end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -