function Fib( k: integer ): integer; var min,predmin, pom: integer; begin min := 1; predmin := 1; while k>0 do begin pom := min + predmin; predmin := min; min := pom; Dec( k ) end; Fib := min end; var i: integer; begin for i:=1 to 50 do writeln( i:10,' : ', Fib(i) ); readln end. { proskakat sachovnici konem - heuristika pokracovani s nejmensim poctem sousedu: } const N = 7; var S: array[1..N,1..N] of integer; var PocetVolani: integer; procedure Tisk; var x,y: integer; begin writeln( 'PocetVolani=',PocetVolani ); for y:=1 to N do begin for x:=1 to N do if S[x,y]=-1 then write( ' . ' ) else write( S[x,y]:3 ); writeln end; readln end; function PocetVolnychSousedu( x,y: integer ): integer; var xx,yy, pocet: integer; begin pocet := 0; for xx := x-2 to x+2 do for yy := y-2 to y+2 do if (xx>=1) and (xx<=N) and (yy>=1) and (yy<=N) then if abs(xx-x) + abs(yy-y) = 3 then if S[xx,yy]=-1 then pocet := pocet+1; PocetVolnychSousedu := pocet end; procedure Skoc( x,y, krok: integer ); var xx,yy, i,j: integer; sousedi: array[0..8] of record x,y, pokracovani: integer; end; PocetSousedu: integer; begin PocetVolani := PocetVolani+1; if (x>=1) and (x<=N) and (y>=1) and (y<=N) and (S[x,y] = -1) then begin S[x,y] := krok; { Tisk; } if (krok=N*N) then Tisk else begin PocetSousedu := 0; for xx := x-2 to x+2 do for yy := y-2 to y+2 do if abs(xx-x) + abs(yy-y) = 3 then begin PocetSousedu := PocetSousedu+1; sousedi[ PocetSousedu ].x := xx; sousedi[ PocetSousedu ].y := yy; sousedi[ PocetSousedu ].pokracovani := PocetVolnychSousedu( xx,yy ); end; { seradit, aby na zacatku byla policka s nejmensim poctem moznych pokracovani: } for j := 1 to PocetSousedu-1 do for i := 1 to PocetSousedu-1 do if sousedi[ i ].pokracovani > sousedi[ i+1 ].pokracovani then begin sousedi[ 0 ] := sousedi[ i ]; sousedi[ i ] := sousedi[ i+1 ]; sousedi[ i+1 ] := sousedi[ 0 ]; end; { projit: } for i := 1 to PocetSousedu do Skoc( sousedi[ i ].x,sousedi[ i ].y, krok+1 ); end; S[x,y] := -1 end; end; var i,j: integer; begin for i:=1 to N do for j:=1 to N do S[i,j] := -1; Skoc( 1,1, 1 ); writeln('KONEC'); readln; end. type integer = longint; const MAX = 1000; var Vysledek: array[0..MAX] of longint; function Fib( k: integer ): integer; begin if Vysledek[ k ] = 0then begin if k<=1 then Vysledek[ k ] := 1 else Vysledek[ k ] := Fib( k-1 ) + Fib( k-2 ); end; Fib := Vysledek[ k ] end; var i: integer; begin for i:=1 to 50 do writeln( i:10,' : ', Fib(i) ); readln end. const DELKA = 10; type Cislo = array[0..DELKA] of 0..9; procedure VynasobDlouheDlouhym( var Co: Cislo; Cim: Cislo ); var V: Cislo; i,j, k: integer; Prenos: integer; x: integer; begin Prenos := 0; for k := 0 to DELKA do begin x := Prenos; for i:=0 to k do begin j := k-i; x := x + Co[i] * Cim[j] end; V[ k ] := x mod 10; Prenos := x div 10 end; Co := V end; procedure Dosad( var Kam: Cislo; x: longint ); var i: integer; begin for i:=0 to DELKA do begin Kam[i] := x mod 10; x := x div 10 end; end; procedure Vytiskni(Co: Cislo); var i: integer; begin for i:=DELKA downto 0 do write( Co[i] ); writeln end; var A,B: Cislo; begin Dosad( A, 1526 ); Vytiskni( A ); Dosad( B, 357 ); Vytiskni( B ); VynasobDlouheDlouhym( A, B ); Vytiskni( A ); ; readln end. const DELKA = 10000; NAVIC = 5; MAX = DELKA + NAVIC; {$O+} {$R+} type Cislo = array[0..MAX] of 0..9; procedure Vytiskni( Co: Cislo ); var i: integer; begin write( Co[0], ',' ); for i:=1 to MAX do write( Co[i] ); writeln end; procedure Dosad( cislo: integer; var Kam: Cislo ); var i: integer; begin Kam[0] := cislo; for i:=1 to MAX do Kam[i] := 0 end; procedure Pricti( Co: Cislo; var Kam: Cislo ); var i: integer; prenos, x: integer; begin Prenos := 0; for i:=MAX downto 0 do begin x := Prenos + Co[i] + Kam[i]; Kam[i] := x mod 10; Prenos := x div 10 end; if Prenos<>0 then RunError( 777 ) end; { var x: Cislo; begin Dosad( 0, x ); x[MAX] := 1; while TRUE do begin Pricti( x, x ); Vytiskni( x ); readln end; end. } var KdeJePrvniNenulovaCislice: integer; procedure Vydel( var Co: Cislo; Cim: integer ); var i: integer; x: integer; begin x := 0; KdeJePrvniNenulovaCislice := 0; {$B-} while (KdeJePrvniNenulovaCislice<=MAX) and (Co[ KdeJePrvniNenulovaCislice ]=0) do Inc( KdeJePrvniNenulovaCislice ); for i:=KdeJePrvniNenulovaCislice to MAX do begin x := 10*x + Co[i]; Co[i] := x div Cim; x := x mod Cim end; end; var x: Cislo; Soucet: Cislo; i: integer; begin KdeJePrvniNenulovaCislice := 0; Dosad( 0, Soucet ); Dosad( 1, x ); i := 0; while KdeJePrvniNenulovaCislice <= MAX do begin Pricti( x, Soucet ); i := i+1; Vydel( x, i ) end; {------------------} Vytiskni( Soucet ); writeln('i=',i) ; readln end. var x: Cislo; begin Dosad( 1, x ); Vytiskni( x ); ;readln ; end.