Príprava k domácemu kolu OI 2025/2026¶

41. ročník, kategória A¶

  • pre všetkých žiakov SŠ
  • jediná kategória pre 3. a 4. ročník SŠ
  • potrebná znalosť základných algoritmov a programovania
  • výber medzinárodných reprezentácií

Úlohy¶

každá úloha za 10 bodov

  • Programátorské - automatické testovanie vyladeného programu
  • Teoretické - spísaný popis riešenia
  • Model - teoretická úloha so študijným textom
  • pomerne náročné
  • obsah vysoko prekračujúci ŠVP
  • dlhé a komplexné úlohy a študijné texty

Uľahčenie

  • neočakáva sa, že vyriešite všetko
  • úlohy sa dajú riešiť čiastočne
  • na postup na krajské kolo treba len 10 bodov
  • k domácemu kolu existujú návodné úlohy (na stránke oi.sk)
  • teoretické úlohy sa opierajú najmä o matematiku

Zdroje¶

  • stránka olympiády https://oi.sk/
  • návodné úlohy k domácemu kolu https://oi.sk/archiv/2025/sl-2025-1-ine-A-navodne.pdf
  • organizátori anderle.michal@gmail.com, rastislav.krivos-bellus@upjs.sk
  • korešpondenčný seminár z programovania https://www.ksp.sk/
  • programátorská kuchárka https://www.ksp.sk/kucharka/
  • informatický krúžok na UPJŠ https://ics.upjs.sk/kruzok/ [+ PALMA https://palma.strom.sk/]

Slovné riešenie¶

Malo by obsahovať

  • Popis myšlienky - high-level čo váš algoritmus bude robiť
  • Popis algoritmov a dátových štruktúr, ktoré využívate
  • Zdôvodnenie správnosti - hlavné argumenty zdôvodňujúce korektnosť programu
  • Odhad časovej zložitosti

  • Inšpiráciu hľadajte vo vzorových riešeniach
  • Popis nemá byť preloženie programu! (napr. netreba názvy premenných)
  • Za odhad zložitosti je málo bodov.

https://www.ksp.sk/idealne-riesenie/

A-I-1 Semafory¶

praktická image.png

image-2.png

Návodné úlohy¶

image-2.png

In [42]:
den = 13
(den % 7) in [0, 6]
Out[42]:
True
In [43]:
den = 13
"vikend" if (den % 7) in [0, 6] else "pracovny den"
Out[43]:
'vikend'
In [44]:
den = int(input("Zadaj den:"))
print("vikend" if (den % 7) in [0, 6] else "pracovny den")
Zadaj den:11
pracovny den
In [45]:
# rok 2025

den = int(input("Zadaj den:"))
print("vikend" if (den % 7) in [4, 5] else "pracovny den")
Zadaj den:4
vikend
In [ ]:
#den, mesiac ...

image.png

priamočiaro ... kedy bude zelená na ďalšom semafore

image.png image-3.png

Sada 4 ... Dijkstra na hľadanie najkratších ciest z križovatky 1

  • buď tabuľka pre všeky vrcholy s $\infty$ a postupne aktualizujeme
  • alebo štruktúra údajov Rad (Queue), kde vkladáme nájdené vzdialeností

Sada 5 ... doplnenie o počítanie čakania na semafore

Sada 1 ... simulácia po sekundách

image.png

sada 4 + v každom vrchole vždy čakáme ...

A-I-2 Pokazený robot¶

praktická image-3.png image-2.png

Návodné úlohy¶

image.png

In [48]:
d = [-30, 10, 25, -5, 10, -30]
n = len(d)
k = 3
for i in range(n-k+1):
    print(i, sum(d[i:i+k]))
0 5
1 30
2 30
3 -25

Čas $O(n \cdot k)$

Aktualizovať vieme aj v konštantom čase (-prvý a +ďalší)

In [51]:
d = [-30, 10, 25, -5, 10, -30]
n = len(d)
k = 3
suma = sum(d[:k])
for i in range(n-k):
    print(i, suma)
    suma += d[i+k]-d[i]
print(n-k, suma)
0 5
1 30
2 30
3 -25

Čas $O(n+k)$

image.png

In [54]:
d = [-30, 10, 25, -5, 10, -30]
n = len(d)
k = 3
for i in range(n-k+1):
    print(i, max(d[i:i+k]))
0 25
1 25
2 25
3 10
  • zoradíme - pamätáme usporiadané

  • halda

image.png

image.png

image.png

A-I-3 Piškóty¶

teoretická image-2.png image.png

Dajú sa zjesť všetky?

Návodné úlohy¶

image.png

image.png

image.png

image.png

image.png

image.png

A-I-4 Nechaj to na solver¶

model

https://oi.sk/apps/ilp/

Nugetky¶

image.png

$x_1$ balení po 6ks za 2 €

$x_2$ balení po 9ks za 2,90 €

$x_3$ balení po 20ks za 6,10 €

Nugetiek: $6 \cdot x_1+9 \cdot x_2+20 \cdot x_3 = 6x_1+9x_2+20x_3$ ks

Cena: $2x_1+2,9x_2+6,10x_3$ €, resp. $200x_1+290x_2+610x_3$ eurocentov

Máme 32 €, t.j. $20x_1+29x_2+61 x_3 \leq 320$

Chceme čo najviac kusov, teda $6x_1+9x_2+20x_3 \rightarrow \max$

In [2]:
import pulp
print( pulp.listSolvers() ) # tieto solvery vie tvoja verzia PuLPu použiť
print( pulp.listSolvers(onlyAvailable = True) ) # tieto má naozaj dostupné
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[2], line 1
----> 1 import pulp
      2 print( pulp.listSolvers() ) # tieto solvery vie tvoja verzia PuLPu použiť
      3 print( pulp.listSolvers(onlyAvailable = True) )

ModuleNotFoundError: No module named 'pulp'
In [3]:
!pip install pulp
Defaulting to user installation because normal site-packages is not writeable
Collecting pulp
  Obtaining dependency information for pulp from https://files.pythonhosted.org/packages/99/6c/64cafaceea3f99927e84b38a362ec6a8f24f33061c90bda77dfe1cd4c3c6/pulp-3.3.0-py3-none-any.whl.metadata
  Downloading pulp-3.3.0-py3-none-any.whl.metadata (8.4 kB)
Downloading pulp-3.3.0-py3-none-any.whl (16.4 MB)
   ---------------------------------------- 0.0/16.4 MB ? eta -:--:--
   ---------------------------------------- 0.0/16.4 MB ? eta -:--:--
   ---------------------------------------- 0.0/16.4 MB 330.3 kB/s eta 0:00:50
   ---------------------------------------- 0.1/16.4 MB 871.5 kB/s eta 0:00:19
   - -------------------------------------- 0.5/16.4 MB 3.3 MB/s eta 0:00:05
   -- ------------------------------------- 0.9/16.4 MB 4.9 MB/s eta 0:00:04
   --- ------------------------------------ 1.6/16.4 MB 6.8 MB/s eta 0:00:03
   ----- ---------------------------------- 2.4/16.4 MB 8.4 MB/s eta 0:00:02
   ------- -------------------------------- 3.0/16.4 MB 9.1 MB/s eta 0:00:02
   --------- ------------------------------ 3.9/16.4 MB 10.2 MB/s eta 0:00:02
   ----------- ---------------------------- 4.6/16.4 MB 10.8 MB/s eta 0:00:02
   ------------- -------------------------- 5.4/16.4 MB 11.4 MB/s eta 0:00:01
   -------------- ------------------------- 6.1/16.4 MB 11.9 MB/s eta 0:00:01
   ----------------- ---------------------- 7.0/16.4 MB 12.5 MB/s eta 0:00:01
   ------------------- -------------------- 7.9/16.4 MB 12.9 MB/s eta 0:00:01
   --------------------- ------------------ 8.7/16.4 MB 13.3 MB/s eta 0:00:01
   ----------------------- ---------------- 9.5/16.4 MB 13.8 MB/s eta 0:00:01
   ------------------------- -------------- 10.3/16.4 MB 15.6 MB/s eta 0:00:01
   -------------------------- ------------- 11.0/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------- ----------- 11.7/16.4 MB 16.8 MB/s eta 0:00:01
   ------------------------------ --------- 12.4/16.4 MB 16.8 MB/s eta 0:00:01
   -------------------------------- ------- 13.2/16.4 MB 17.2 MB/s eta 0:00:01
   --------------------------------- ------ 13.9/16.4 MB 16.8 MB/s eta 0:00:01
   ----------------------------------- ---- 14.7/16.4 MB 16.8 MB/s eta 0:00:01
   ------------------------------------- -- 15.5/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------------------  16.2/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------------------  16.4/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------------------  16.4/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------------------  16.4/16.4 MB 16.8 MB/s eta 0:00:01
   ---------------------------------------- 16.4/16.4 MB 13.6 MB/s eta 0:00:00
Installing collected packages: pulp
Successfully installed pulp-3.3.0
DEPRECATION: Loading egg at c:\programdata\anaconda3\lib\site-packages\vboxapi-1.0-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
  WARNING: The script pulptest.exe is installed in 'C:\Users\RKB\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
In [4]:
import pulp
print( pulp.listSolvers() ) # tieto solvery vie tvoja verzia PuLPu použiť
print( pulp.listSolvers(onlyAvailable = True) ) # tieto má naozaj dostupné
['CyLP', 'GLPK_CMD', 'PYGLPK', 'CPLEX_CMD', 'CPLEX_PY', 'GUROBI', 'GUROBI_CMD', 'MOSEK', 'XPRESS', 'XPRESS', 'XPRESS_PY', 'PULP_CBC_CMD', 'COIN_CMD', 'COINMP_DLL', 'CHOCO_CMD', 'MIPCL_CMD', 'SCIP_CMD', 'FSCIP_CMD', 'SCIP_PY', 'HiGHS', 'HiGHS_CMD', 'COPT', 'COPT_DLL', 'COPT_CMD', 'SAS94', 'SASCAS', 'CUOPT']
['PULP_CBC_CMD']
In [9]:
import pulp


problem = pulp.LpProblem('Nugetky', pulp.LpMaximize)

# zadefinujeme si premenné, ktoré chceme používať
# cat ("category") je typ premennej, my budeme používať 'Integer' a 'Binary'

x1 = pulp.LpVariable('x1', cat='Integer', lowBound=0)
x2 = pulp.LpVariable('x2', cat='Integer', lowBound=0)
x3 = pulp.LpVariable('x3', cat='Integer', lowBound=0)

problem += 6*x1 + 9*x2 + 20*x3 # cieľ

problem += 20*x1 + 29*x2 + 61*x3 <= 320 # obmedzenie

print(problem)
print('-'*15)
# spustíme solver

status = problem.solve()

assert pulp.LpStatus[status] == 'Optimal'

# vypíšeme si hodnotu riešenia a následne hodnoty jednotlivých premenných
# pulp nám interne vráti floaty, my vieme, že naše odpovede sú celé čísla, pre istotu ich pri konverzii zaokrúhlime

def to_int(x): return int(round(x))


print( 'optimálny počet nugetiek:', to_int( pulp.value( problem.objective ) ) )

# premenné aj samé poznajú svoju hodnotu, ale rovnako sme mohli použiť pulp.value(premenna)

for premenna in [x1, x2, x3]: print( premenna.name, '=', to_int(premenna.varValue) )
Nugetky:
MAXIMIZE
6*x1 + 9*x2 + 20*x3 + 0
SUBJECT TO
_C1: 20 x1 + 29 x2 + 61 x3 <= 320

VARIABLES
0 <= x1 Integer
0 <= x2 Integer
0 <= x3 Integer

---------------
optimálny počet nugetiek: 102
x1 = 1
x2 = 4
x3 = 3
In [8]:
6*1 + 9*4 + 20*3
Out[8]:
102
In [31]:
%%writefile nugetky.in
max: 6x1 + 9x2 + 20x3;
20x1 + 29x2 + 61x3 <= 320;
int x1, x2, x3;
Overwriting nugetky.in
In [32]:
!lp_solve nugetky.in
Value of objective function: 102.00000000

Actual values of the variables:
x1                              1
x2                              4
x3                              3
In [29]:
%%writefile nugetky.in
max: 6x1 + 9x2 + 20x3;
20x1 + 29x2 + 61x3 <= 320;
Overwriting nugetky.in
In [30]:
!lp_solve nugetky.in
Value of objective function: 104.91803279

Actual values of the variables:
x1                              0
x2                              0
x3                         5.2459

Sudoku¶

5 3 . . 7 . . . .
6 . . 1 9 5 . . .
. 9 8 . . . . 6 .
8 . . . 6 . . . 3
4 . . 8 . 3 . . 1
7 . . . 2 . . . 6
. 6 . . . . 2 8 .
. . . 4 1 9 . . 5
. . . . 8 . . 7 9

https://oi.sk/apps/ilp/sudoku_lp.py

In [20]:
%%writefile sudoku.lp
max: 0;
x111 + x112 + x113 + x114 + x115 + x116 + x117 + x118 + x119 = 1;
x121 + x122 + x123 + x124 + x125 + x126 + x127 + x128 + x129 = 1;
x131 + x132 + x133 + x134 + x135 + x136 + x137 + x138 + x139 = 1;
x141 + x142 + x143 + x144 + x145 + x146 + x147 + x148 + x149 = 1;
x151 + x152 + x153 + x154 + x155 + x156 + x157 + x158 + x159 = 1;
x161 + x162 + x163 + x164 + x165 + x166 + x167 + x168 + x169 = 1;
x171 + x172 + x173 + x174 + x175 + x176 + x177 + x178 + x179 = 1;
x181 + x182 + x183 + x184 + x185 + x186 + x187 + x188 + x189 = 1;
x191 + x192 + x193 + x194 + x195 + x196 + x197 + x198 + x199 = 1;
x211 + x212 + x213 + x214 + x215 + x216 + x217 + x218 + x219 = 1;
x221 + x222 + x223 + x224 + x225 + x226 + x227 + x228 + x229 = 1;
x231 + x232 + x233 + x234 + x235 + x236 + x237 + x238 + x239 = 1;
x241 + x242 + x243 + x244 + x245 + x246 + x247 + x248 + x249 = 1;
x251 + x252 + x253 + x254 + x255 + x256 + x257 + x258 + x259 = 1;
x261 + x262 + x263 + x264 + x265 + x266 + x267 + x268 + x269 = 1;
x271 + x272 + x273 + x274 + x275 + x276 + x277 + x278 + x279 = 1;
x281 + x282 + x283 + x284 + x285 + x286 + x287 + x288 + x289 = 1;
x291 + x292 + x293 + x294 + x295 + x296 + x297 + x298 + x299 = 1;
x311 + x312 + x313 + x314 + x315 + x316 + x317 + x318 + x319 = 1;
x321 + x322 + x323 + x324 + x325 + x326 + x327 + x328 + x329 = 1;
x331 + x332 + x333 + x334 + x335 + x336 + x337 + x338 + x339 = 1;
x341 + x342 + x343 + x344 + x345 + x346 + x347 + x348 + x349 = 1;
x351 + x352 + x353 + x354 + x355 + x356 + x357 + x358 + x359 = 1;
x361 + x362 + x363 + x364 + x365 + x366 + x367 + x368 + x369 = 1;
x371 + x372 + x373 + x374 + x375 + x376 + x377 + x378 + x379 = 1;
x381 + x382 + x383 + x384 + x385 + x386 + x387 + x388 + x389 = 1;
x391 + x392 + x393 + x394 + x395 + x396 + x397 + x398 + x399 = 1;
x411 + x412 + x413 + x414 + x415 + x416 + x417 + x418 + x419 = 1;
x421 + x422 + x423 + x424 + x425 + x426 + x427 + x428 + x429 = 1;
x431 + x432 + x433 + x434 + x435 + x436 + x437 + x438 + x439 = 1;
x441 + x442 + x443 + x444 + x445 + x446 + x447 + x448 + x449 = 1;
x451 + x452 + x453 + x454 + x455 + x456 + x457 + x458 + x459 = 1;
x461 + x462 + x463 + x464 + x465 + x466 + x467 + x468 + x469 = 1;
x471 + x472 + x473 + x474 + x475 + x476 + x477 + x478 + x479 = 1;
x481 + x482 + x483 + x484 + x485 + x486 + x487 + x488 + x489 = 1;
x491 + x492 + x493 + x494 + x495 + x496 + x497 + x498 + x499 = 1;
x511 + x512 + x513 + x514 + x515 + x516 + x517 + x518 + x519 = 1;
x521 + x522 + x523 + x524 + x525 + x526 + x527 + x528 + x529 = 1;
x531 + x532 + x533 + x534 + x535 + x536 + x537 + x538 + x539 = 1;
x541 + x542 + x543 + x544 + x545 + x546 + x547 + x548 + x549 = 1;
x551 + x552 + x553 + x554 + x555 + x556 + x557 + x558 + x559 = 1;
x561 + x562 + x563 + x564 + x565 + x566 + x567 + x568 + x569 = 1;
x571 + x572 + x573 + x574 + x575 + x576 + x577 + x578 + x579 = 1;
x581 + x582 + x583 + x584 + x585 + x586 + x587 + x588 + x589 = 1;
x591 + x592 + x593 + x594 + x595 + x596 + x597 + x598 + x599 = 1;
x611 + x612 + x613 + x614 + x615 + x616 + x617 + x618 + x619 = 1;
x621 + x622 + x623 + x624 + x625 + x626 + x627 + x628 + x629 = 1;
x631 + x632 + x633 + x634 + x635 + x636 + x637 + x638 + x639 = 1;
x641 + x642 + x643 + x644 + x645 + x646 + x647 + x648 + x649 = 1;
x651 + x652 + x653 + x654 + x655 + x656 + x657 + x658 + x659 = 1;
x661 + x662 + x663 + x664 + x665 + x666 + x667 + x668 + x669 = 1;
x671 + x672 + x673 + x674 + x675 + x676 + x677 + x678 + x679 = 1;
x681 + x682 + x683 + x684 + x685 + x686 + x687 + x688 + x689 = 1;
x691 + x692 + x693 + x694 + x695 + x696 + x697 + x698 + x699 = 1;
x711 + x712 + x713 + x714 + x715 + x716 + x717 + x718 + x719 = 1;
x721 + x722 + x723 + x724 + x725 + x726 + x727 + x728 + x729 = 1;
x731 + x732 + x733 + x734 + x735 + x736 + x737 + x738 + x739 = 1;
x741 + x742 + x743 + x744 + x745 + x746 + x747 + x748 + x749 = 1;
x751 + x752 + x753 + x754 + x755 + x756 + x757 + x758 + x759 = 1;
x761 + x762 + x763 + x764 + x765 + x766 + x767 + x768 + x769 = 1;
x771 + x772 + x773 + x774 + x775 + x776 + x777 + x778 + x779 = 1;
x781 + x782 + x783 + x784 + x785 + x786 + x787 + x788 + x789 = 1;
x791 + x792 + x793 + x794 + x795 + x796 + x797 + x798 + x799 = 1;
x811 + x812 + x813 + x814 + x815 + x816 + x817 + x818 + x819 = 1;
x821 + x822 + x823 + x824 + x825 + x826 + x827 + x828 + x829 = 1;
x831 + x832 + x833 + x834 + x835 + x836 + x837 + x838 + x839 = 1;
x841 + x842 + x843 + x844 + x845 + x846 + x847 + x848 + x849 = 1;
x851 + x852 + x853 + x854 + x855 + x856 + x857 + x858 + x859 = 1;
x861 + x862 + x863 + x864 + x865 + x866 + x867 + x868 + x869 = 1;
x871 + x872 + x873 + x874 + x875 + x876 + x877 + x878 + x879 = 1;
x881 + x882 + x883 + x884 + x885 + x886 + x887 + x888 + x889 = 1;
x891 + x892 + x893 + x894 + x895 + x896 + x897 + x898 + x899 = 1;
x911 + x912 + x913 + x914 + x915 + x916 + x917 + x918 + x919 = 1;
x921 + x922 + x923 + x924 + x925 + x926 + x927 + x928 + x929 = 1;
x931 + x932 + x933 + x934 + x935 + x936 + x937 + x938 + x939 = 1;
x941 + x942 + x943 + x944 + x945 + x946 + x947 + x948 + x949 = 1;
x951 + x952 + x953 + x954 + x955 + x956 + x957 + x958 + x959 = 1;
x961 + x962 + x963 + x964 + x965 + x966 + x967 + x968 + x969 = 1;
x971 + x972 + x973 + x974 + x975 + x976 + x977 + x978 + x979 = 1;
x981 + x982 + x983 + x984 + x985 + x986 + x987 + x988 + x989 = 1;
x991 + x992 + x993 + x994 + x995 + x996 + x997 + x998 + x999 = 1;
x111 + x121 + x131 + x141 + x151 + x161 + x171 + x181 + x191 = 1;
x112 + x122 + x132 + x142 + x152 + x162 + x172 + x182 + x192 = 1;
x113 + x123 + x133 + x143 + x153 + x163 + x173 + x183 + x193 = 1;
x114 + x124 + x134 + x144 + x154 + x164 + x174 + x184 + x194 = 1;
x115 + x125 + x135 + x145 + x155 + x165 + x175 + x185 + x195 = 1;
x116 + x126 + x136 + x146 + x156 + x166 + x176 + x186 + x196 = 1;
x117 + x127 + x137 + x147 + x157 + x167 + x177 + x187 + x197 = 1;
x118 + x128 + x138 + x148 + x158 + x168 + x178 + x188 + x198 = 1;
x119 + x129 + x139 + x149 + x159 + x169 + x179 + x189 + x199 = 1;
x211 + x221 + x231 + x241 + x251 + x261 + x271 + x281 + x291 = 1;
x212 + x222 + x232 + x242 + x252 + x262 + x272 + x282 + x292 = 1;
x213 + x223 + x233 + x243 + x253 + x263 + x273 + x283 + x293 = 1;
x214 + x224 + x234 + x244 + x254 + x264 + x274 + x284 + x294 = 1;
x215 + x225 + x235 + x245 + x255 + x265 + x275 + x285 + x295 = 1;
x216 + x226 + x236 + x246 + x256 + x266 + x276 + x286 + x296 = 1;
x217 + x227 + x237 + x247 + x257 + x267 + x277 + x287 + x297 = 1;
x218 + x228 + x238 + x248 + x258 + x268 + x278 + x288 + x298 = 1;
x219 + x229 + x239 + x249 + x259 + x269 + x279 + x289 + x299 = 1;
x311 + x321 + x331 + x341 + x351 + x361 + x371 + x381 + x391 = 1;
x312 + x322 + x332 + x342 + x352 + x362 + x372 + x382 + x392 = 1;
x313 + x323 + x333 + x343 + x353 + x363 + x373 + x383 + x393 = 1;
x314 + x324 + x334 + x344 + x354 + x364 + x374 + x384 + x394 = 1;
x315 + x325 + x335 + x345 + x355 + x365 + x375 + x385 + x395 = 1;
x316 + x326 + x336 + x346 + x356 + x366 + x376 + x386 + x396 = 1;
x317 + x327 + x337 + x347 + x357 + x367 + x377 + x387 + x397 = 1;
x318 + x328 + x338 + x348 + x358 + x368 + x378 + x388 + x398 = 1;
x319 + x329 + x339 + x349 + x359 + x369 + x379 + x389 + x399 = 1;
x411 + x421 + x431 + x441 + x451 + x461 + x471 + x481 + x491 = 1;
x412 + x422 + x432 + x442 + x452 + x462 + x472 + x482 + x492 = 1;
x413 + x423 + x433 + x443 + x453 + x463 + x473 + x483 + x493 = 1;
x414 + x424 + x434 + x444 + x454 + x464 + x474 + x484 + x494 = 1;
x415 + x425 + x435 + x445 + x455 + x465 + x475 + x485 + x495 = 1;
x416 + x426 + x436 + x446 + x456 + x466 + x476 + x486 + x496 = 1;
x417 + x427 + x437 + x447 + x457 + x467 + x477 + x487 + x497 = 1;
x418 + x428 + x438 + x448 + x458 + x468 + x478 + x488 + x498 = 1;
x419 + x429 + x439 + x449 + x459 + x469 + x479 + x489 + x499 = 1;
x511 + x521 + x531 + x541 + x551 + x561 + x571 + x581 + x591 = 1;
x512 + x522 + x532 + x542 + x552 + x562 + x572 + x582 + x592 = 1;
x513 + x523 + x533 + x543 + x553 + x563 + x573 + x583 + x593 = 1;
x514 + x524 + x534 + x544 + x554 + x564 + x574 + x584 + x594 = 1;
x515 + x525 + x535 + x545 + x555 + x565 + x575 + x585 + x595 = 1;
x516 + x526 + x536 + x546 + x556 + x566 + x576 + x586 + x596 = 1;
x517 + x527 + x537 + x547 + x557 + x567 + x577 + x587 + x597 = 1;
x518 + x528 + x538 + x548 + x558 + x568 + x578 + x588 + x598 = 1;
x519 + x529 + x539 + x549 + x559 + x569 + x579 + x589 + x599 = 1;
x611 + x621 + x631 + x641 + x651 + x661 + x671 + x681 + x691 = 1;
x612 + x622 + x632 + x642 + x652 + x662 + x672 + x682 + x692 = 1;
x613 + x623 + x633 + x643 + x653 + x663 + x673 + x683 + x693 = 1;
x614 + x624 + x634 + x644 + x654 + x664 + x674 + x684 + x694 = 1;
x615 + x625 + x635 + x645 + x655 + x665 + x675 + x685 + x695 = 1;
x616 + x626 + x636 + x646 + x656 + x666 + x676 + x686 + x696 = 1;
x617 + x627 + x637 + x647 + x657 + x667 + x677 + x687 + x697 = 1;
x618 + x628 + x638 + x648 + x658 + x668 + x678 + x688 + x698 = 1;
x619 + x629 + x639 + x649 + x659 + x669 + x679 + x689 + x699 = 1;
x711 + x721 + x731 + x741 + x751 + x761 + x771 + x781 + x791 = 1;
x712 + x722 + x732 + x742 + x752 + x762 + x772 + x782 + x792 = 1;
x713 + x723 + x733 + x743 + x753 + x763 + x773 + x783 + x793 = 1;
x714 + x724 + x734 + x744 + x754 + x764 + x774 + x784 + x794 = 1;
x715 + x725 + x735 + x745 + x755 + x765 + x775 + x785 + x795 = 1;
x716 + x726 + x736 + x746 + x756 + x766 + x776 + x786 + x796 = 1;
x717 + x727 + x737 + x747 + x757 + x767 + x777 + x787 + x797 = 1;
x718 + x728 + x738 + x748 + x758 + x768 + x778 + x788 + x798 = 1;
x719 + x729 + x739 + x749 + x759 + x769 + x779 + x789 + x799 = 1;
x811 + x821 + x831 + x841 + x851 + x861 + x871 + x881 + x891 = 1;
x812 + x822 + x832 + x842 + x852 + x862 + x872 + x882 + x892 = 1;
x813 + x823 + x833 + x843 + x853 + x863 + x873 + x883 + x893 = 1;
x814 + x824 + x834 + x844 + x854 + x864 + x874 + x884 + x894 = 1;
x815 + x825 + x835 + x845 + x855 + x865 + x875 + x885 + x895 = 1;
x816 + x826 + x836 + x846 + x856 + x866 + x876 + x886 + x896 = 1;
x817 + x827 + x837 + x847 + x857 + x867 + x877 + x887 + x897 = 1;
x818 + x828 + x838 + x848 + x858 + x868 + x878 + x888 + x898 = 1;
x819 + x829 + x839 + x849 + x859 + x869 + x879 + x889 + x899 = 1;
x911 + x921 + x931 + x941 + x951 + x961 + x971 + x981 + x991 = 1;
x912 + x922 + x932 + x942 + x952 + x962 + x972 + x982 + x992 = 1;
x913 + x923 + x933 + x943 + x953 + x963 + x973 + x983 + x993 = 1;
x914 + x924 + x934 + x944 + x954 + x964 + x974 + x984 + x994 = 1;
x915 + x925 + x935 + x945 + x955 + x965 + x975 + x985 + x995 = 1;
x916 + x926 + x936 + x946 + x956 + x966 + x976 + x986 + x996 = 1;
x917 + x927 + x937 + x947 + x957 + x967 + x977 + x987 + x997 = 1;
x918 + x928 + x938 + x948 + x958 + x968 + x978 + x988 + x998 = 1;
x919 + x929 + x939 + x949 + x959 + x969 + x979 + x989 + x999 = 1;
x111 + x211 + x311 + x411 + x511 + x611 + x711 + x811 + x911 = 1;
x112 + x212 + x312 + x412 + x512 + x612 + x712 + x812 + x912 = 1;
x113 + x213 + x313 + x413 + x513 + x613 + x713 + x813 + x913 = 1;
x114 + x214 + x314 + x414 + x514 + x614 + x714 + x814 + x914 = 1;
x115 + x215 + x315 + x415 + x515 + x615 + x715 + x815 + x915 = 1;
x116 + x216 + x316 + x416 + x516 + x616 + x716 + x816 + x916 = 1;
x117 + x217 + x317 + x417 + x517 + x617 + x717 + x817 + x917 = 1;
x118 + x218 + x318 + x418 + x518 + x618 + x718 + x818 + x918 = 1;
x119 + x219 + x319 + x419 + x519 + x619 + x719 + x819 + x919 = 1;
x121 + x221 + x321 + x421 + x521 + x621 + x721 + x821 + x921 = 1;
x122 + x222 + x322 + x422 + x522 + x622 + x722 + x822 + x922 = 1;
x123 + x223 + x323 + x423 + x523 + x623 + x723 + x823 + x923 = 1;
x124 + x224 + x324 + x424 + x524 + x624 + x724 + x824 + x924 = 1;
x125 + x225 + x325 + x425 + x525 + x625 + x725 + x825 + x925 = 1;
x126 + x226 + x326 + x426 + x526 + x626 + x726 + x826 + x926 = 1;
x127 + x227 + x327 + x427 + x527 + x627 + x727 + x827 + x927 = 1;
x128 + x228 + x328 + x428 + x528 + x628 + x728 + x828 + x928 = 1;
x129 + x229 + x329 + x429 + x529 + x629 + x729 + x829 + x929 = 1;
x131 + x231 + x331 + x431 + x531 + x631 + x731 + x831 + x931 = 1;
x132 + x232 + x332 + x432 + x532 + x632 + x732 + x832 + x932 = 1;
x133 + x233 + x333 + x433 + x533 + x633 + x733 + x833 + x933 = 1;
x134 + x234 + x334 + x434 + x534 + x634 + x734 + x834 + x934 = 1;
x135 + x235 + x335 + x435 + x535 + x635 + x735 + x835 + x935 = 1;
x136 + x236 + x336 + x436 + x536 + x636 + x736 + x836 + x936 = 1;
x137 + x237 + x337 + x437 + x537 + x637 + x737 + x837 + x937 = 1;
x138 + x238 + x338 + x438 + x538 + x638 + x738 + x838 + x938 = 1;
x139 + x239 + x339 + x439 + x539 + x639 + x739 + x839 + x939 = 1;
x141 + x241 + x341 + x441 + x541 + x641 + x741 + x841 + x941 = 1;
x142 + x242 + x342 + x442 + x542 + x642 + x742 + x842 + x942 = 1;
x143 + x243 + x343 + x443 + x543 + x643 + x743 + x843 + x943 = 1;
x144 + x244 + x344 + x444 + x544 + x644 + x744 + x844 + x944 = 1;
x145 + x245 + x345 + x445 + x545 + x645 + x745 + x845 + x945 = 1;
x146 + x246 + x346 + x446 + x546 + x646 + x746 + x846 + x946 = 1;
x147 + x247 + x347 + x447 + x547 + x647 + x747 + x847 + x947 = 1;
x148 + x248 + x348 + x448 + x548 + x648 + x748 + x848 + x948 = 1;
x149 + x249 + x349 + x449 + x549 + x649 + x749 + x849 + x949 = 1;
x151 + x251 + x351 + x451 + x551 + x651 + x751 + x851 + x951 = 1;
x152 + x252 + x352 + x452 + x552 + x652 + x752 + x852 + x952 = 1;
x153 + x253 + x353 + x453 + x553 + x653 + x753 + x853 + x953 = 1;
x154 + x254 + x354 + x454 + x554 + x654 + x754 + x854 + x954 = 1;
x155 + x255 + x355 + x455 + x555 + x655 + x755 + x855 + x955 = 1;
x156 + x256 + x356 + x456 + x556 + x656 + x756 + x856 + x956 = 1;
x157 + x257 + x357 + x457 + x557 + x657 + x757 + x857 + x957 = 1;
x158 + x258 + x358 + x458 + x558 + x658 + x758 + x858 + x958 = 1;
x159 + x259 + x359 + x459 + x559 + x659 + x759 + x859 + x959 = 1;
x161 + x261 + x361 + x461 + x561 + x661 + x761 + x861 + x961 = 1;
x162 + x262 + x362 + x462 + x562 + x662 + x762 + x862 + x962 = 1;
x163 + x263 + x363 + x463 + x563 + x663 + x763 + x863 + x963 = 1;
x164 + x264 + x364 + x464 + x564 + x664 + x764 + x864 + x964 = 1;
x165 + x265 + x365 + x465 + x565 + x665 + x765 + x865 + x965 = 1;
x166 + x266 + x366 + x466 + x566 + x666 + x766 + x866 + x966 = 1;
x167 + x267 + x367 + x467 + x567 + x667 + x767 + x867 + x967 = 1;
x168 + x268 + x368 + x468 + x568 + x668 + x768 + x868 + x968 = 1;
x169 + x269 + x369 + x469 + x569 + x669 + x769 + x869 + x969 = 1;
x171 + x271 + x371 + x471 + x571 + x671 + x771 + x871 + x971 = 1;
x172 + x272 + x372 + x472 + x572 + x672 + x772 + x872 + x972 = 1;
x173 + x273 + x373 + x473 + x573 + x673 + x773 + x873 + x973 = 1;
x174 + x274 + x374 + x474 + x574 + x674 + x774 + x874 + x974 = 1;
x175 + x275 + x375 + x475 + x575 + x675 + x775 + x875 + x975 = 1;
x176 + x276 + x376 + x476 + x576 + x676 + x776 + x876 + x976 = 1;
x177 + x277 + x377 + x477 + x577 + x677 + x777 + x877 + x977 = 1;
x178 + x278 + x378 + x478 + x578 + x678 + x778 + x878 + x978 = 1;
x179 + x279 + x379 + x479 + x579 + x679 + x779 + x879 + x979 = 1;
x181 + x281 + x381 + x481 + x581 + x681 + x781 + x881 + x981 = 1;
x182 + x282 + x382 + x482 + x582 + x682 + x782 + x882 + x982 = 1;
x183 + x283 + x383 + x483 + x583 + x683 + x783 + x883 + x983 = 1;
x184 + x284 + x384 + x484 + x584 + x684 + x784 + x884 + x984 = 1;
x185 + x285 + x385 + x485 + x585 + x685 + x785 + x885 + x985 = 1;
x186 + x286 + x386 + x486 + x586 + x686 + x786 + x886 + x986 = 1;
x187 + x287 + x387 + x487 + x587 + x687 + x787 + x887 + x987 = 1;
x188 + x288 + x388 + x488 + x588 + x688 + x788 + x888 + x988 = 1;
x189 + x289 + x389 + x489 + x589 + x689 + x789 + x889 + x989 = 1;
x191 + x291 + x391 + x491 + x591 + x691 + x791 + x891 + x991 = 1;
x192 + x292 + x392 + x492 + x592 + x692 + x792 + x892 + x992 = 1;
x193 + x293 + x393 + x493 + x593 + x693 + x793 + x893 + x993 = 1;
x194 + x294 + x394 + x494 + x594 + x694 + x794 + x894 + x994 = 1;
x195 + x295 + x395 + x495 + x595 + x695 + x795 + x895 + x995 = 1;
x196 + x296 + x396 + x496 + x596 + x696 + x796 + x896 + x996 = 1;
x197 + x297 + x397 + x497 + x597 + x697 + x797 + x897 + x997 = 1;
x198 + x298 + x398 + x498 + x598 + x698 + x798 + x898 + x998 = 1;
x199 + x299 + x399 + x499 + x599 + x699 + x799 + x899 + x999 = 1;
x111 + x121 + x131 + x211 + x221 + x231 + x311 + x321 + x331 = 1;
x112 + x122 + x132 + x212 + x222 + x232 + x312 + x322 + x332 = 1;
x113 + x123 + x133 + x213 + x223 + x233 + x313 + x323 + x333 = 1;
x114 + x124 + x134 + x214 + x224 + x234 + x314 + x324 + x334 = 1;
x115 + x125 + x135 + x215 + x225 + x235 + x315 + x325 + x335 = 1;
x116 + x126 + x136 + x216 + x226 + x236 + x316 + x326 + x336 = 1;
x117 + x127 + x137 + x217 + x227 + x237 + x317 + x327 + x337 = 1;
x118 + x128 + x138 + x218 + x228 + x238 + x318 + x328 + x338 = 1;
x119 + x129 + x139 + x219 + x229 + x239 + x319 + x329 + x339 = 1;
x141 + x151 + x161 + x241 + x251 + x261 + x341 + x351 + x361 = 1;
x142 + x152 + x162 + x242 + x252 + x262 + x342 + x352 + x362 = 1;
x143 + x153 + x163 + x243 + x253 + x263 + x343 + x353 + x363 = 1;
x144 + x154 + x164 + x244 + x254 + x264 + x344 + x354 + x364 = 1;
x145 + x155 + x165 + x245 + x255 + x265 + x345 + x355 + x365 = 1;
x146 + x156 + x166 + x246 + x256 + x266 + x346 + x356 + x366 = 1;
x147 + x157 + x167 + x247 + x257 + x267 + x347 + x357 + x367 = 1;
x148 + x158 + x168 + x248 + x258 + x268 + x348 + x358 + x368 = 1;
x149 + x159 + x169 + x249 + x259 + x269 + x349 + x359 + x369 = 1;
x171 + x181 + x191 + x271 + x281 + x291 + x371 + x381 + x391 = 1;
x172 + x182 + x192 + x272 + x282 + x292 + x372 + x382 + x392 = 1;
x173 + x183 + x193 + x273 + x283 + x293 + x373 + x383 + x393 = 1;
x174 + x184 + x194 + x274 + x284 + x294 + x374 + x384 + x394 = 1;
x175 + x185 + x195 + x275 + x285 + x295 + x375 + x385 + x395 = 1;
x176 + x186 + x196 + x276 + x286 + x296 + x376 + x386 + x396 = 1;
x177 + x187 + x197 + x277 + x287 + x297 + x377 + x387 + x397 = 1;
x178 + x188 + x198 + x278 + x288 + x298 + x378 + x388 + x398 = 1;
x179 + x189 + x199 + x279 + x289 + x299 + x379 + x389 + x399 = 1;
x411 + x421 + x431 + x511 + x521 + x531 + x611 + x621 + x631 = 1;
x412 + x422 + x432 + x512 + x522 + x532 + x612 + x622 + x632 = 1;
x413 + x423 + x433 + x513 + x523 + x533 + x613 + x623 + x633 = 1;
x414 + x424 + x434 + x514 + x524 + x534 + x614 + x624 + x634 = 1;
x415 + x425 + x435 + x515 + x525 + x535 + x615 + x625 + x635 = 1;
x416 + x426 + x436 + x516 + x526 + x536 + x616 + x626 + x636 = 1;
x417 + x427 + x437 + x517 + x527 + x537 + x617 + x627 + x637 = 1;
x418 + x428 + x438 + x518 + x528 + x538 + x618 + x628 + x638 = 1;
x419 + x429 + x439 + x519 + x529 + x539 + x619 + x629 + x639 = 1;
x441 + x451 + x461 + x541 + x551 + x561 + x641 + x651 + x661 = 1;
x442 + x452 + x462 + x542 + x552 + x562 + x642 + x652 + x662 = 1;
x443 + x453 + x463 + x543 + x553 + x563 + x643 + x653 + x663 = 1;
x444 + x454 + x464 + x544 + x554 + x564 + x644 + x654 + x664 = 1;
x445 + x455 + x465 + x545 + x555 + x565 + x645 + x655 + x665 = 1;
x446 + x456 + x466 + x546 + x556 + x566 + x646 + x656 + x666 = 1;
x447 + x457 + x467 + x547 + x557 + x567 + x647 + x657 + x667 = 1;
x448 + x458 + x468 + x548 + x558 + x568 + x648 + x658 + x668 = 1;
x449 + x459 + x469 + x549 + x559 + x569 + x649 + x659 + x669 = 1;
x471 + x481 + x491 + x571 + x581 + x591 + x671 + x681 + x691 = 1;
x472 + x482 + x492 + x572 + x582 + x592 + x672 + x682 + x692 = 1;
x473 + x483 + x493 + x573 + x583 + x593 + x673 + x683 + x693 = 1;
x474 + x484 + x494 + x574 + x584 + x594 + x674 + x684 + x694 = 1;
x475 + x485 + x495 + x575 + x585 + x595 + x675 + x685 + x695 = 1;
x476 + x486 + x496 + x576 + x586 + x596 + x676 + x686 + x696 = 1;
x477 + x487 + x497 + x577 + x587 + x597 + x677 + x687 + x697 = 1;
x478 + x488 + x498 + x578 + x588 + x598 + x678 + x688 + x698 = 1;
x479 + x489 + x499 + x579 + x589 + x599 + x679 + x689 + x699 = 1;
x711 + x721 + x731 + x811 + x821 + x831 + x911 + x921 + x931 = 1;
x712 + x722 + x732 + x812 + x822 + x832 + x912 + x922 + x932 = 1;
x713 + x723 + x733 + x813 + x823 + x833 + x913 + x923 + x933 = 1;
x714 + x724 + x734 + x814 + x824 + x834 + x914 + x924 + x934 = 1;
x715 + x725 + x735 + x815 + x825 + x835 + x915 + x925 + x935 = 1;
x716 + x726 + x736 + x816 + x826 + x836 + x916 + x926 + x936 = 1;
x717 + x727 + x737 + x817 + x827 + x837 + x917 + x927 + x937 = 1;
x718 + x728 + x738 + x818 + x828 + x838 + x918 + x928 + x938 = 1;
x719 + x729 + x739 + x819 + x829 + x839 + x919 + x929 + x939 = 1;
x741 + x751 + x761 + x841 + x851 + x861 + x941 + x951 + x961 = 1;
x742 + x752 + x762 + x842 + x852 + x862 + x942 + x952 + x962 = 1;
x743 + x753 + x763 + x843 + x853 + x863 + x943 + x953 + x963 = 1;
x744 + x754 + x764 + x844 + x854 + x864 + x944 + x954 + x964 = 1;
x745 + x755 + x765 + x845 + x855 + x865 + x945 + x955 + x965 = 1;
x746 + x756 + x766 + x846 + x856 + x866 + x946 + x956 + x966 = 1;
x747 + x757 + x767 + x847 + x857 + x867 + x947 + x957 + x967 = 1;
x748 + x758 + x768 + x848 + x858 + x868 + x948 + x958 + x968 = 1;
x749 + x759 + x769 + x849 + x859 + x869 + x949 + x959 + x969 = 1;
x771 + x781 + x791 + x871 + x881 + x891 + x971 + x981 + x991 = 1;
x772 + x782 + x792 + x872 + x882 + x892 + x972 + x982 + x992 = 1;
x773 + x783 + x793 + x873 + x883 + x893 + x973 + x983 + x993 = 1;
x774 + x784 + x794 + x874 + x884 + x894 + x974 + x984 + x994 = 1;
x775 + x785 + x795 + x875 + x885 + x895 + x975 + x985 + x995 = 1;
x776 + x786 + x796 + x876 + x886 + x896 + x976 + x986 + x996 = 1;
x777 + x787 + x797 + x877 + x887 + x897 + x977 + x987 + x997 = 1;
x778 + x788 + x798 + x878 + x888 + x898 + x978 + x988 + x998 = 1;
x779 + x789 + x799 + x879 + x889 + x899 + x979 + x989 + x999 = 1;
x115 = 1;
x123 = 1;
x157 = 1;
x216 = 1;
x241 = 1;
x259 = 1;
x265 = 1;
x329 = 1;
x338 = 1;
x386 = 1;
x418 = 1;
x456 = 1;
x493 = 1;
x514 = 1;
x548 = 1;
x563 = 1;
x591 = 1;
x617 = 1;
x652 = 1;
x696 = 1;
x726 = 1;
x772 = 1;
x788 = 1;
x844 = 1;
x851 = 1;
x869 = 1;
x895 = 1;
x958 = 1;
x987 = 1;
x999 = 1;
bin x111, x112, x113, x114, x116, x117, x118, x119, x121, x122, x124, x125, x126, x127, x128, x129, x131, x132, x133, x134, x135, x136, x137, x138, x139, x141, x142, x143, x144, x145, x146, x147, x148, x149, x151, x152, x153, x154, x155, x156, x158, x159, x161, x162, x163, x164, x165, x166, x167, x168, x169, x171, x172, x173, x174, x175, x176, x177, x178, x179, x181, x182, x183, x184, x185, x186, x187, x188, x189, x191, x192, x193, x194, x195, x196, x197, x198, x199, x211, x212, x213, x214, x215, x217, x218, x219, x221, x222, x223, x224, x225, x226, x227, x228, x229, x231, x232, x233, x234, x235, x236, x237, x238, x239, x242, x243, x244, x245, x246, x247, x248, x249, x251, x252, x253, x254, x255, x256, x257, x258, x261, x262, x263, x264, x266, x267, x268, x269, x271, x272, x273, x274, x275, x276, x277, x278, x279, x281, x282, x283, x284, x285, x286, x287, x288, x289, x291, x292, x293, x294, x295, x296, x297, x298, x299, x311, x312, x313, x314, x315, x316, x317, x318, x319, x321, x322, x323, x324, x325, x326, x327, x328, x331, x332, x333, x334, x335, x336, x337, x339, x341, x342, x343, x344, x345, x346, x347, x348, x349, x351, x352, x353, x354, x355, x356, x357, x358, x359, x361, x362, x363, x364, x365, x366, x367, x368, x369, x371, x372, x373, x374, x375, x376, x377, x378, x379, x381, x382, x383, x384, x385, x387, x388, x389, x391, x392, x393, x394, x395, x396, x397, x398, x399, x411, x412, x413, x414, x415, x416, x417, x419, x421, x422, x423, x424, x425, x426, x427, x428, x429, x431, x432, x433, x434, x435, x436, x437, x438, x439, x441, x442, x443, x444, x445, x446, x447, x448, x449, x451, x452, x453, x454, x455, x457, x458, x459, x461, x462, x463, x464, x465, x466, x467, x468, x469, x471, x472, x473, x474, x475, x476, x477, x478, x479, x481, x482, x483, x484, x485, x486, x487, x488, x489, x491, x492, x494, x495, x496, x497, x498, x499, x511, x512, x513, x515, x516, x517, x518, x519, x521, x522, x523, x524, x525, x526, x527, x528, x529, x531, x532, x533, x534, x535, x536, x537, x538, x539, x541, x542, x543, x544, x545, x546, x547, x549, x551, x552, x553, x554, x555, x556, x557, x558, x559, x561, x562, x564, x565, x566, x567, x568, x569, x571, x572, x573, x574, x575, x576, x577, x578, x579, x581, x582, x583, x584, x585, x586, x587, x588, x589, x592, x593, x594, x595, x596, x597, x598, x599, x611, x612, x613, x614, x615, x616, x618, x619, x621, x622, x623, x624, x625, x626, x627, x628, x629, x631, x632, x633, x634, x635, x636, x637, x638, x639, x641, x642, x643, x644, x645, x646, x647, x648, x649, x651, x653, x654, x655, x656, x657, x658, x659, x661, x662, x663, x664, x665, x666, x667, x668, x669, x671, x672, x673, x674, x675, x676, x677, x678, x679, x681, x682, x683, x684, x685, x686, x687, x688, x689, x691, x692, x693, x694, x695, x697, x698, x699, x711, x712, x713, x714, x715, x716, x717, x718, x719, x721, x722, x723, x724, x725, x727, x728, x729, x731, x732, x733, x734, x735, x736, x737, x738, x739, x741, x742, x743, x744, x745, x746, x747, x748, x749, x751, x752, x753, x754, x755, x756, x757, x758, x759, x761, x762, x763, x764, x765, x766, x767, x768, x769, x771, x773, x774, x775, x776, x777, x778, x779, x781, x782, x783, x784, x785, x786, x787, x789, x791, x792, x793, x794, x795, x796, x797, x798, x799, x811, x812, x813, x814, x815, x816, x817, x818, x819, x821, x822, x823, x824, x825, x826, x827, x828, x829, x831, x832, x833, x834, x835, x836, x837, x838, x839, x841, x842, x843, x845, x846, x847, x848, x849, x852, x853, x854, x855, x856, x857, x858, x859, x861, x862, x863, x864, x865, x866, x867, x868, x871, x872, x873, x874, x875, x876, x877, x878, x879, x881, x882, x883, x884, x885, x886, x887, x888, x889, x891, x892, x893, x894, x896, x897, x898, x899, x911, x912, x913, x914, x915, x916, x917, x918, x919, x921, x922, x923, x924, x925, x926, x927, x928, x929, x931, x932, x933, x934, x935, x936, x937, x938, x939, x941, x942, x943, x944, x945, x946, x947, x948, x949, x951, x952, x953, x954, x955, x956, x957, x959, x961, x962, x963, x964, x965, x966, x967, x968, x969, x971, x972, x973, x974, x975, x976, x977, x978, x979, x981, x982, x983, x984, x985, x986, x988, x989, x991, x992, x993, x994, x995, x996, x997, x998;
Writing sudoku.lp

sudoku.png

In [21]:
!lp_solve -presolve sudoku.lp
Value of objective function: 0

Actual values of the variables:
x111                            0
x112                            0
x113                            0
x114                            0
x115                            1
x116                            0
x117                            0
x118                            0
x119                            0
x121                            0
x122                            0
x123                            1
x124                            0
x125                            0
x126                            0
x127                            0
x128                            0
x129                            0
x131                            0
x132                            0
x133                            0
x134                            1
x135                            0
x136                            0
x137                            0
x138                            0
x139                            0
x141                            0
x142                            0
x143                            0
x144                            0
x145                            0
x146                            1
x147                            0
x148                            0
x149                            0
x151                            0
x152                            0
x153                            0
x154                            0
x155                            0
x156                            0
x157                            1
x158                            0
x159                            0
x161                            0
x162                            0
x163                            0
x164                            0
x165                            0
x166                            0
x167                            0
x168                            1
x169                            0
x171                            0
x172                            0
x173                            0
x174                            0
x175                            0
x176                            0
x177                            0
x178                            0
x179                            1
x181                            1
x182                            0
x183                            0
x184                            0
x185                            0
x186                            0
x187                            0
x188                            0
x189                            0
x191                            0
x192                            1
x193                            0
x194                            0
x195                            0
x196                            0
x197                            0
x198                            0
x199                            0
x211                            0
x212                            0
x213                            0
x214                            0
x215                            0
x216                            1
x217                            0
x218                            0
x219                            0
x221                            0
x222                            0
x223                            0
x224                            0
x225                            0
x226                            0
x227                            1
x228                            0
x229                            0
x231                            0
x232                            1
x233                            0
x234                            0
x235                            0
x236                            0
x237                            0
x238                            0
x239                            0
x241                            1
x242                            0
x243                            0
x244                            0
x245                            0
x246                            0
x247                            0
x248                            0
x249                            0
x251                            0
x252                            0
x253                            0
x254                            0
x255                            0
x256                            0
x257                            0
x258                            0
x259                            1
x261                            0
x262                            0
x263                            0
x264                            0
x265                            1
x266                            0
x267                            0
x268                            0
x269                            0
x271                            0
x272                            0
x273                            1
x274                            0
x275                            0
x276                            0
x277                            0
x278                            0
x279                            0
x281                            0
x282                            0
x283                            0
x284                            1
x285                            0
x286                            0
x287                            0
x288                            0
x289                            0
x291                            0
x292                            0
x293                            0
x294                            0
x295                            0
x296                            0
x297                            0
x298                            1
x299                            0
x311                            1
x312                            0
x313                            0
x314                            0
x315                            0
x316                            0
x317                            0
x318                            0
x319                            0
x321                            0
x322                            0
x323                            0
x324                            0
x325                            0
x326                            0
x327                            0
x328                            0
x329                            1
x331                            0
x332                            0
x333                            0
x334                            0
x335                            0
x336                            0
x337                            0
x338                            1
x339                            0
x341                            0
x342                            0
x343                            1
x344                            0
x345                            0
x346                            0
x347                            0
x348                            0
x349                            0
x351                            0
x352                            0
x353                            0
x354                            1
x355                            0
x356                            0
x357                            0
x358                            0
x359                            0
x361                            0
x362                            1
x363                            0
x364                            0
x365                            0
x366                            0
x367                            0
x368                            0
x369                            0
x371                            0
x372                            0
x373                            0
x374                            0
x375                            1
x376                            0
x377                            0
x378                            0
x379                            0
x381                            0
x382                            0
x383                            0
x384                            0
x385                            0
x386                            1
x387                            0
x388                            0
x389                            0
x391                            0
x392                            0
x393                            0
x394                            0
x395                            0
x396                            0
x397                            1
x398                            0
x399                            0
x411                            0
x412                            0
x413                            0
x414                            0
x415                            0
x416                            0
x417                            0
x418                            1
x419                            0
x421                            0
x422                            0
x423                            0
x424                            0
x425                            1
x426                            0
x427                            0
x428                            0
x429                            0
x431                            0
x432                            0
x433                            0
x434                            0
x435                            0
x436                            0
x437                            0
x438                            0
x439                            1
x441                            0
x442                            0
x443                            0
x444                            0
x445                            0
x446                            0
x447                            1
x448                            0
x449                            0
x451                            0
x452                            0
x453                            0
x454                            0
x455                            0
x456                            1
x457                            0
x458                            0
x459                            0
x461                            1
x462                            0
x463                            0
x464                            0
x465                            0
x466                            0
x467                            0
x468                            0
x469                            0
x471                            0
x472                            0
x473                            0
x474                            1
x475                            0
x476                            0
x477                            0
x478                            0
x479                            0
x481                            0
x482                            1
x483                            0
x484                            0
x485                            0
x486                            0
x487                            0
x488                            0
x489                            0
x491                            0
x492                            0
x493                            1
x494                            0
x495                            0
x496                            0
x497                            0
x498                            0
x499                            0
x511                            0
x512                            0
x513                            0
x514                            1
x515                            0
x516                            0
x517                            0
x518                            0
x519                            0
x521                            0
x522                            1
x523                            0
x524                            0
x525                            0
x526                            0
x527                            0
x528                            0
x529                            0
x531                            0
x532                            0
x533                            0
x534                            0
x535                            0
x536                            1
x537                            0
x538                            0
x539                            0
x541                            0
x542                            0
x543                            0
x544                            0
x545                            0
x546                            0
x547                            0
x548                            1
x549                            0
x551                            0
x552                            0
x553                            0
x554                            0
x555                            1
x556                            0
x557                            0
x558                            0
x559                            0
x561                            0
x562                            0
x563                            1
x564                            0
x565                            0
x566                            0
x567                            0
x568                            0
x569                            0
x571                            0
x572                            0
x573                            0
x574                            0
x575                            0
x576                            0
x577                            1
x578                            0
x579                            0
x581                            0
x582                            0
x583                            0
x584                            0
x585                            0
x586                            0
x587                            0
x588                            0
x589                            1
x591                            1
x592                            0
x593                            0
x594                            0
x595                            0
x596                            0
x597                            0
x598                            0
x599                            0
x611                            0
x612                            0
x613                            0
x614                            0
x615                            0
x616                            0
x617                            1
x618                            0
x619                            0
x621                            1
x622                            0
x623                            0
x624                            0
x625                            0
x626                            0
x627                            0
x628                            0
x629                            0
x631                            0
x632                            0
x633                            1
x634                            0
x635                            0
x636                            0
x637                            0
x638                            0
x639                            0
x641                            0
x642                            0
x643                            0
x644                            0
x645                            0
x646                            0
x647                            0
x648                            0
x649                            1
x651                            0
x652                            1
x653                            0
x654                            0
x655                            0
x656                            0
x657                            0
x658                            0
x659                            0
x661                            0
x662                            0
x663                            0
x664                            1
x665                            0
x666                            0
x667                            0
x668                            0
x669                            0
x671                            0
x672                            0
x673                            0
x674                            0
x675                            0
x676                            0
x677                            0
x678                            1
x679                            0
x681                            0
x682                            0
x683                            0
x684                            0
x685                            1
x686                            0
x687                            0
x688                            0
x689                            0
x691                            0
x692                            0
x693                            0
x694                            0
x695                            0
x696                            1
x697                            0
x698                            0
x699                            0
x711                            0
x712                            0
x713                            0
x714                            0
x715                            0
x716                            0
x717                            0
x718                            0
x719                            1
x721                            0
x722                            0
x723                            0
x724                            0
x725                            0
x726                            1
x727                            0
x728                            0
x729                            0
x731                            1
x732                            0
x733                            0
x734                            0
x735                            0
x736                            0
x737                            0
x738                            0
x739                            0
x741                            0
x742                            0
x743                            0
x744                            0
x745                            1
x746                            0
x747                            0
x748                            0
x749                            0
x751                            0
x752                            0
x753                            1
x754                            0
x755                            0
x756                            0
x757                            0
x758                            0
x759                            0
x761                            0
x762                            0
x763                            0
x764                            0
x765                            0
x766                            0
x767                            1
x768                            0
x769                            0
x771                            0
x772                            1
x773                            0
x774                            0
x775                            0
x776                            0
x777                            0
x778                            0
x779                            0
x781                            0
x782                            0
x783                            0
x784                            0
x785                            0
x786                            0
x787                            0
x788                            1
x789                            0
x791                            0
x792                            0
x793                            0
x794                            1
x795                            0
x796                            0
x797                            0
x798                            0
x799                            0
x811                            0
x812                            1
x813                            0
x814                            0
x815                            0
x816                            0
x817                            0
x818                            0
x819                            0
x821                            0
x822                            0
x823                            0
x824                            0
x825                            0
x826                            0
x827                            0
x828                            1
x829                            0
x831                            0
x832                            0
x833                            0
x834                            0
x835                            0
x836                            0
x837                            1
x838                            0
x839                            0
x841                            0
x842                            0
x843                            0
x844                            1
x845                            0
x846                            0
x847                            0
x848                            0
x849                            0
x851                            1
x852                            0
x853                            0
x854                            0
x855                            0
x856                            0
x857                            0
x858                            0
x859                            0
x861                            0
x862                            0
x863                            0
x864                            0
x865                            0
x866                            0
x867                            0
x868                            0
x869                            1
x871                            0
x872                            0
x873                            0
x874                            0
x875                            0
x876                            1
x877                            0
x878                            0
x879                            0
x881                            0
x882                            0
x883                            1
x884                            0
x885                            0
x886                            0
x887                            0
x888                            0
x889                            0
x891                            0
x892                            0
x893                            0
x894                            0
x895                            1
x896                            0
x897                            0
x898                            0
x899                            0
x911                            0
x912                            0
x913                            1
x914                            0
x915                            0
x916                            0
x917                            0
x918                            0
x919                            0
x921                            0
x922                            0
x923                            0
x924                            1
x925                            0
x926                            0
x927                            0
x928                            0
x929                            0
x931                            0
x932                            0
x933                            0
x934                            0
x935                            1
x936                            0
x937                            0
x938                            0
x939                            0
x941                            0
x942                            1
x943                            0
x944                            0
x945                            0
x946                            0
x947                            0
x948                            0
x949                            0
x951                            0
x952                            0
x953                            0
x954                            0
x955                            0
x956                            0
x957                            0
x958                            1
x959                            0
x961                            0
x962                            0
x963                            0
x964                            0
x965                            0
x966                            1
x967                            0
x968                            0
x969                            0
x971                            1
x972                            0
x973                            0
x974                            0
x975                            0
x976                            0
x977                            0
x978                            0
x979                            0
x981                            0
x982                            0
x983                            0
x984                            0
x985                            0
x986                            0
x987                            1
x988                            0
x989                            0
x991                            0
x992                            0
x993                            0
x994                            0
x995                            0
x996                            0
x997                            0
x998                            0
x999                            1
In [34]:
!lp_solve -presolve sudoku.lp | grep "1$" 
#len kde je jednotka na konci
x115                            1
x123                            1
x134                            1
x146                            1
x157                            1
x168                            1
x179                            1
x181                            1
x192                            1
x216                            1
x227                            1
x232                            1
x241                            1
x259                            1
x265                            1
x273                            1
x284                            1
x298                            1
x311                            1
x329                            1
x338                            1
x343                            1
x354                            1
x362                            1
x375                            1
x386                            1
x397                            1
x418                            1
x425                            1
x439                            1
x447                            1
x456                            1
x461                            1
x474                            1
x482                            1
x493                            1
x514                            1
x522                            1
x536                            1
x548                            1
x555                            1
x563                            1
x577                            1
x589                            1
x591                            1
x617                            1
x621                            1
x633                            1
x649                            1
x652                            1
x664                            1
x678                            1
x685                            1
x696                            1
x719                            1
x726                            1
x731                            1
x745                            1
x753                            1
x767                            1
x772                            1
x788                            1
x794                            1
x812                            1
x828                            1
x837                            1
x844                            1
x851                            1
x869                            1
x876                            1
x883                            1
x895                            1
x913                            1
x924                            1
x935                            1
x942                            1
x958                            1
x966                            1
x971                            1
x987                            1
x999                            1

image.png

Návodné úlohy¶

image.png

image.png

image.png

image.png image-2.png image-3.png

image.png

Pre každú vec jednu premennú $x_i$ ... 1 ak sme zobrali, 0 inak.

MAXimalizujeme:

$x_1 \cdot v_1 + x_2 \cdot v_2 + \cdots + x_n \cdot v_n \rightarrow \max$

Nosnosť:

$x_1 \cdot v_1 + x_2 \cdot v_2 + \cdots + x_n \cdot v_n \leq l$

Binárne premenné:

BINary $x_i$

tabuľa¶

IMG_20251022_173112_resized_20251022_054053750.jpg

In [ ]: