procedure Presun( kolik, odkud, kam: integer ); begin if kolik = 1 then writeln( odkud,'-->>', kam ) else begin Presun( kolik-1, odkud, 1+2+3 - odkud - kam ); Presun( 1, odkud, kam ); Presun( kolik-1, 1+2+3 - odkud - kam, kam ); end end; begin Presun( 5, 1, 2 ) end. procedure VypisVsechnyPermutace( zceho, CoVytisknoutPredtim: string ); var i: integer; begin if zceho='' then writeln( CoVytisknoutPredtim ) else for i:=1 to length( zceho ) do VypisVsechnyPermutace( copy( zceho, 1, i-1 ) + copy( zceho, i+1, 255 ), CoVytisknoutPredtim + zceho[ i ] ) end; begin VypisVsechnyPermutace( 'abcd','' ); readln; VypisVsechnyPermutace( '012','' ); end. const N = 11; A: array[1..N] of integer = (5,17, 7, 18, 2, 9, 1, 3, 45,18, 5 ); function JdeTo( batoh: integer; odkud: integer ): boolean; begin if odkud > N then JdeTo := FALSE else if batoh=0 then JdeTo := TRUE else if JdeTo( batoh, odkud+1 ) then JdeTo := TRUE else if JdeTo( batoh-A[ odkud ], odkud+1 ) then begin write( A[ odkud ],' ' ); JdeTo := TRUE end else JdeTo := FALSE end; begin writeln( JdeTo( 65, 1 ) ) end. const N = 50; type Cislo = array[0..N] of 0..9; procedure Vytiskni( const Co: Cislo ); var i: integer; UzBylaNejakaNenulovaCislice: boolean; begin UzBylaNejakaNenulovaCislice := FALSE; for i:= N downto 0 do if UzBylaNejakaNenulovaCislice or (Co[ i ]<>0) then begin write( Co[ i ] ); UzBylaNejakaNenulovaCislice := TRUE end; writeln end; procedure Dosad( var Kam: Cislo; x: integer ); var i: integer; begin Kam[ 0 ] := x; for i:=1 to N do Kam[ i ] := 0 end; procedure Vynasob( Co,Cim: Cislo; var Kam: Cislo ); var i,k, x, prenos: integer; begin prenos := 0; for k:=0 to N do begin x := prenos; for i:=0 to k do x := x + Co[ i ] * Cim[ k-i ]; Kam[ k ] := x mod 10; prenos := x div 10 end end; var A: Cislo; i: integer; begin Dosad( A, 2 ); Vytiskni( A ); for i:=1 to 20 do begin Vynasob( A, A, A ); Vytiskni( A ) end end. const presah = 5; delka = 1000; N = delka+presah; type Cislo = array[0..N] of 0..9; procedure Dosad( var Kam: Cislo; Co: byte ); var i: integer; begin Kam[ 0 ] := Co; for i:=1 to N do Kam[ i ] := 0 end; procedure Vytiskni( const Co: Cislo ); var i: integer; begin write( Co[ 0 ],',' ); for i:=1 to delka do write( Co[ i ] ); writeln end; procedure Pricti( var Kam: Cislo; const Co: Cislo ); var i: integer; prenos: 0..1; x: integer; begin prenos := 0; for i:=N downto 0 do begin x := Kam[ i ] + Co[ i ] + prenos; Kam[ i ] := x mod 10; prenos := x div 10 end; if prenos > 0 then RunError( 777 ) end; var PozicePrvniNenuloveCislice: integer; procedure Vydel( var Co: Cislo; Cim: integer ); var i: integer; x: integer; begin x := 0; while (PozicePrvniNenuloveCislice <= N) and (Co[ PozicePrvniNenuloveCislice ]=0) do begin Inc( PozicePrvniNenuloveCislice ) end; for i:=PozicePrvniNenuloveCislice to N do begin x := 10*x + Co[ i ]; Co[ i ] := x div Cim; x := x mod Cim end end; var Soucet, JednaLomenoFaktorialK: Cislo; k: integer; begin Dosad( Soucet, 0 ); Dosad( JednaLomenoFaktorialK, 1 ); PozicePrvniNenuloveCislice := 0; { writeln; for k:=1 to 10 do begin Vytiskni( JednaLomenoFaktorialK ); { Vydel( JednaLomenoFaktorialK, 2 ) Vydel( JednaLomenoFaktorialK, k ) end; end. {} { Soucet[ N ] := 1; for k:=1 to 1000 do begin write( k,': ' ); Vytiskni( Soucet ); Pricti( Soucet, Soucet ) end; end. { Vytiskni( Soucet ); Vytiskni( JednaLomenoFaktorialK ) {} writeln; k := 0; while PozicePrvniNenuloveCislice <= N do begin Pricti( Soucet, JednaLomenoFaktorialK ); write( k,': ' ); k := k+1; Vydel( JednaLomenoFaktorialK, k ); Vytiskni( Soucet ); end; end.