Advertisement
sonprao

003

Oct 26th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.28 KB | None | 0 0
  1. uses crt;
  2. type
  3.         twovariate=record
  4.         a,b:longint;
  5. end;
  6. var    n,k:longint;
  7. luu:array[1..200000000] of twovariate;
  8. function kq(n:longint) : twovariate;
  9. var   q,w,e,r:longint;
  10. begin
  11.         q:=0;
  12.         w:=0;
  13.         e:=0;
  14.         r:=0;
  15.         if (n<200000000) then
  16.         if luu[n].a<>0 then begin kq.a:=luu[n].a; kq.b:=luu[n].b; exit; end;
  17.     if n=1 then begin kq.a:=2; kq.b:=1; end else
  18.     if (n mod 2) =0  then
  19.                 begin
  20.                         q:=kq(n div 2).a;
  21.                         w:=kq(n div 2).b;
  22.                         kq.a:=(q*q+3*w*w) mod 100;
  23.                         kq.b:=(2*q*w) mod 100;
  24.                         luu[n].a:=kq.a;
  25.                         luu[n].b:=kq.b;
  26.                 end else
  27.     if (n mod 2) <>0  then
  28.                 begin
  29.                     q:=kq(n div 2).a;
  30.                     w:=kq(n div 2).b;
  31.                     e:=kq(n div 2+1).a;
  32.                     r:=kq(n div 2+1).b;
  33.                     kq.a:=(q*e+3*w*r) mod 100;
  34.                     kq.b:=(q*r+w*e) mod 100;
  35.                     luu[n].a:=kq.a;
  36.                     luu[n].b:=kq.b;
  37.                 end;
  38. end;
  39. begin
  40.         clrscr;
  41.     readln(n);
  42.     k:=(kq(n).a*2-1) mod 100;
  43.     if k<10 then write('0',k) else write(k);
  44.     readln;
  45. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement