.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » logic

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
logic


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
16MB / 1MB

Demonstrarea automată a teoremelor şi verificarea satisfiabilităţii unei formule constituie două capitole importante în cadrul logicii matematice. Formulele propoziţionale sunt alcătuite din variabile propoziţionale (variabile care pot lua doar două valori: sau adevărat sau fals) şi din operatorii logici şi, sau, negaţie, echivalent, implică.

Iată câteva exemple de formule propoziţionale:
~p&(q<=>p)=>q
p|q<=>~p&~q
p
p=>q=>a=>t=>~p

În acest exemplu, p şi q sunt variabilele propoziţionale, ~ este operatorul unar negaţie, & este operatorul binar şi, | este operatorul binar sau, => este implicaţia logică (şi apare numai în acest sens, nu şi <=), iar <=> este echivalenţa logică. În plus, într-o formulă propoziţională pot să apară şi paranteze care stabilesc ordinea operaţiilor. În lipsa parantezelor, operatorii în ordinea priorităţii lor sunt ~ & | => <=>.
În formulele de forma „A1opA2op...opAK” asociaţiile se fac de la dreapta la stânga (adică „A1op(A2op(...opAL)...)”), unde op este unul dintre &, |, => sau <=> şi Ai sunt variabile propoziţionale, cu i de la 1 la K.

În general, o formulă propoziţională se defineşte astfel:
- orice variabilă propoziţională este formulă propoziţională
- dacă A şi B sunt formule propoziţionale, atunci (A), ~A, A&B, A|B, A=>B, A<=>B sunt formule propoziţionale.

Dacă înlocuim într-o formulă propoziţională toate variabilele cu valori de adevăr (adevărat sau fals), obţinem o afirmaţie. Valoarea de adevăr a unei afirmaţii este dată de următoarea definiţie:
- dacă afirmaţia constă dintr-o singură valoare de adevăr, afirmaţia ia valoarea respectivă
- dacă A şi B sunt afirmaţii, atunci:
A este adevărată dacă şi numai dacă valoarea sa de adevăr este adevărat
(A) este adevărată dacă şi numai dacă A este adevărată
~A este falsă dacă şi numai dacă A este adevărată
A&B este adevărată dacă şi numai dacă atât A cât şi B sunt adevărate
A|B este falsă dacă şi numai dacă A este fals şi B este fals
A=>B este adevărată dacă şi numai dacă ~A|B este adevărată
A<=>B este adevărată dacă şi numai dacă (A=>B)&(B=>A) este adevărată.
Se numeşte soluţie a formulei propoziţionale P (formulă în care apar numai variabilele propoziţionale distincte A1, A2, ..., AN) orice N-uplu (v1, v2, ..., vN) (cu vi valori de adevăr) pentru care înlocuind fiecare variabilă Ai cu valoarea vi, afirmaţia rezultată este adevărată.

Cerinţă

Logica fiind un obiect nesuferit de studenţii de la informatică, ei apelează la informaticienii din clasa a IX-a pentru a-i ajuta să numere câte soluţii distincte are o formulă propoziţională dată.

Date de intrare

În fişierul de intrare logic.in, se găseşte o formulă propoziţională unde variabilele propoziţionale sunt reprezentate de litere mici ale alfabetului englez.

Date de ieşire

In fişierul de ieşire logic.out se va afişa numărul de soluţii pentru formula propoziţională din fişierul de intrare, urmat de caracterul sfârşit de linie.

Restricţii

La intrare se va da intotdeauna o formulă propoziţională corectă sintactic.
Formula are mai puţin de 232 de caractere.
În formulă nu apar mai mult de 10 litere mici ale alfabetului latin.

Exemple

logic.inlogic.out
~(p|q)<=>~p&~q 4

autor: Ştefan Ciobâcă
propunător: Prof. Emanuela Cerchez
Liceul de Informatică ″Grigore Moisil″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la ONI 2004: cuvinte1, gaina, materom, puncte3, rez, sortari, base3, coach, color, magic5, patrate6, turnuri, invsort, peri, trans, politie, sea, poligon3, sir7, poligon2, coduri, snipers, sablon1, submdisj, v, jetoane, prodmax, printesa, palindrom, reziston
De acelaşi autor: parent, program, dotnet, comb, subperm, newcomp, tric, cladiri, bsir
Despre recursivitate: tren, mere, chimie, sarpe, soldati, formule, infinit, compress, ploaia, cartoane, sub, metro, windows, lacuri, apel, maxq, pav, joc11, paianjen, suma2, monkey, csir, lsort, imagine, dir, desert, echitabil, rez, gradina, links, dreptunghiuri, expresie1, cumpanit, reziston, antitero, sablon3
Despre combinatorică: manevre, carti, bonuri, test, cub, nspecial, circuit, numere, cs, pluricex, parent, gray, siruri, anagrame, party, net, scaune, sir, monede, aztec, nrcuv2, perm, race, hanoig, red, grup, hperm, depou, grazing, pm, reteta2, playlist, young, pizza1, albine, caramele, teatru1, tub, robot1, sir23, soldati1, concurs1, comb, expresii, arbnr, cod1, munte, shgraf, desc, lex, munte1, maxperm, role, avere, vizibil, prime1, hexa, patrat, carti2, puncte2, pact, aranjari, numere5, borg, acolor, sg1, perfect, cifru2, bile4, pviz, culmi1, piramida1, trapez, frunze, sir7, coduri, jetoane, kperms, tablite, secvpar, lego, permutari, binperm, multiplu1, operatii, fotbal, kbiti, jucarii, bradut, expozitie, parbit, kmax, petrecere, tango, rege, cd1, cifru3, kcons, bubblesort, hawaii, randomizare, kdist, reuniune, echipa, ghinion, cavaleri, camera616, covor, subm, grupuri, pavari, asfalt, adunscad, rotund, sport2, arbore1, lant1, module, nrperm, oneton, nrpomi, cover1, nrpal, probleme, optim, poly, vot1, sudoku1, flori2, xnumere, showroom, cntgcd, subsets, nkd, nrgraf, spion1, puteri, stiva1, permtr, relatii, 2sah, matcnt, magic7, nmult, roua
surse trimise | ajutor