{--------------------------------------------------------------------- - Subiect: Jocul de sah a fost inventat in India de un supus al regelui Sheram. Incantat de ingeniozitatea jocului, regele a ordonat sa fie chemat inventatorul (pe care il chema Set). Modest imbracat, savantul a aparut la tronul regelui. -- Seta, eu doresc sa te remunerez destoinic pentru splendida joaca pe care ai inventat-o -- a spus Sheram. Numeste premiul care te satisface si il vei primi -- a continuat regele. -- Stapane, -- dupa ce s-a mai gandit, a spus Seta -- ordona sa mi se dea pentru primul patratel un graunte de grau, pentru al doilea - 2 graunte, pentru al treilea - 4, pentru al patrulea - 8, pentru al cincilea - 16, pentru al saselea - 32, ... -- Ajunge! -- iritat l-a intrerupt regele. O sa primesti grauntele tale pentru toate cele 64 patratele ale tablei, conform dorintei tale. Dar sa stii ca tu neglijezi nerespectuos mila mea. - Cerinta: Scrieti un program care ii va ajuta pe matematicienii de la curtea lui Sheram sa calculeze numarul necesar de graunte, despre imensitatea caruia nu isi putea imagina regele. - Iesire: La ecran se va afisa numarul de graunte, destinate lui Set. ---------------------------------------------------------------------} Program tab_sah; uses crt; type byte64 = packed array[0..3] of word; { 4*16 = 64 } var w: byte64; function div10(var a: byte64): char; var n: longint; i: integer; begin n:=0; for i := 0 to 3 do begin n := n shl 16 or a[i]; { n := n * 65536 + a[i] ; } a[i] := n div 10; n := n mod 10; end; div10 := chr(n+ord('0')); end; function IsNull(a: byte64): boolean; begin IsNull := (a[0] = 0) and (a[1] = 0) and (a[2] = 0) and (a[3] = 0); end; function byte64toStr(a: byte64):string; var r: string; begin r := ''; while(not IsNull(a)) do r := div10(a) + r; byte64toStr := r; end; procedure doiLa64(var a: byte64); var i: integer; begin for i := 0 to 3 do a[i] := $FFFF; end; begin clrscr; doiLa64(w); writeln(byte64toStr(w)); readkey; end.