Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses crt;
- type
- twovariate=record
- a,b:longint;
- end;
- var n,k:longint;
- luu:array[1..200000000] of twovariate;
- function kq(n:longint) : twovariate;
- var q,w,e,r:longint;
- begin
- q:=0;
- w:=0;
- e:=0;
- r:=0;
- if (n<200000000) then
- if luu[n].a<>0 then begin kq.a:=luu[n].a; kq.b:=luu[n].b; exit; end;
- if n=1 then begin kq.a:=2; kq.b:=1; end else
- if (n mod 2) =0 then
- begin
- q:=kq(n div 2).a;
- w:=kq(n div 2).b;
- kq.a:=(q*q+3*w*w) mod 100;
- kq.b:=(2*q*w) mod 100;
- luu[n].a:=kq.a;
- luu[n].b:=kq.b;
- end else
- if (n mod 2) <>0 then
- begin
- q:=kq(n div 2).a;
- w:=kq(n div 2).b;
- e:=kq(n div 2+1).a;
- r:=kq(n div 2+1).b;
- kq.a:=(q*e+3*w*r) mod 100;
- kq.b:=(q*r+w*e) mod 100;
- luu[n].a:=kq.a;
- luu[n].b:=kq.b;
- end;
- end;
- begin
- clrscr;
- readln(n);
- k:=(kq(n).a*2-1) mod 100;
- if k<10 then write('0',k) else write(k);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement