riešenie

  1. Program počíta postupnosť druhých mocnín celých čísel a kontroluje ich s prvkami poľa a. Ak je x <= 0, preskočí (1–x) prvkov postupnosti. Do premennej b si zaznamenáva po bitoch, ktorý prvok poľa sa rovná príslušnej druhej mocnine, t.j. a[i]=(i+x+1)2.
    1. nakoľko x=-2, tak sa porovnávajú mocniny 16, 25, 36, 49, 64, 81, 100, t.j. druhé, štvrté a siedme číslo – po bitoch 0101001, t.j. b=41
    2. číslo 47 v dvojkovej sústave: 101111 a keďže poznáme tretí 121 a piaty 169 prvok poľa, pole musí obsahovať tieto hodnoty: 81, ?, 121, 144, 169, 196, kde ? je ľubovoľné číslo rôzne od 100. Aby sa ako prvá testovala mocnina 81, musíme preskočiť prvých 8 hodnôt, t.j. x = -7.
  1. Program postupne pre všetky čísla z intervalu <1,N> testuje, či sú deliteľné číslami <2,N> a pre všetkých deliteľov pípne, pre "nedeliteľov" len čaká. Označme počet všetkých deliteľov čísel  z intervalu <1,N> premennou p (t.j. počet pípnutí) a konštantu v príkaze cakaj premennou c – potom celkový čas môžeme zapísať vzorcom: (N*(N-1)-p)*c+p.
    1. pre N=12 je počet deliteľov p=23 (2; 3; 2,4; 5; 2,3,6; 7; 2,4,8; 3,9; 2,5,10; 11; 2,3,4,6,12) a teda dĺžka trvania programu 11.13 sekundy
    2. čísla z intervalu <1,20> majú p=46 deliteľov (pípnutí) – dosadíme do vzorca a dostávame (20*19-46)*c+46=10400 a teda konštanta v príkaze cakaj je c=10354/334=31
  1.  Zatláčanie tlačidiel kalkulačky generuje čísla, ktoré v 3-ovej sústave obsahujú len cifry 1 a 2 a žiadnu cifru 0 – pričom vždy začínajú cifrou 1.
    1. ak zatlačíme 4-krát prvé a 3 krát druhé tlačidlo, dostávame v 3-ovej sústave 8-ciferné číslo, ktoré obsahuje len cifry 1 a 2 a vždy začína cifrou 1, t.j. počet rôznych čísel môžeme vypočítať ako kombináciu tretej triedy z 7-prvkovej množiny, teda komb(7,3)=35, najmenšie číslo má v 3-ovej sústave zápis 111112223=329310 a najväčšie 122211113=433310.
    2. postupne generujme strom:
      • 1. krok:  1(4,5),    resp. 1(113,123)
      • 2. krok:  4(13,14), 5(16,17),     resp. 113 (1113,1123), 123 (1213,1223),
      • 3. krok:  13(40,41), 14(43,44), 16(49,50), 17(52,53),    resp. 1113 (11113,11123), ...
      • 4. krok:  40(121,122), 41(124,125), 43(130,131), 44(133,134), 49(148,149), 50(151,152), 52(157,158), 53(160,161),
      • 5. krok:  121(364,365), 122(367,368), 124(373,374), 125(376,377), 130(391,392), 131(394,395), 133(400,401), 134(403,404), 148(445,446), 149(448,449), 151(454,455), 152(457,458), 157(472,473), 158(475,476), 160(481,482), 161(484,485)
      • 6. krok: všetky čísla sú už väčšie ako 1000.
      • Všetky trojciferné čísla sme dostali v 4. a 5. krokoch a je ich 16+32=48
  1.  napr. riešenie
      v:=5; u:=0;
      for i:=1 to n do begin
        vektor(u,v);
        inc(v,5); inc(u,90);
      end;
      for i:=1 to n do begin
        dec(v,5); dec(u,90);
        vektor(u+180,v);
      end;