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

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


Timp maxim de executie/test:
0.1 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

Fie n un numar natural. Codul Gray de ordin n (notat Gray(n)) este constituit din toate secventele binare de lungime n, plasate astfel încât oricare doua secvente consecutive difera pe o singura pozitie.
Pentru a construi Gray(n) se poate aplica urmatorul procedeu recursiv:
Gray(1) este:
0
1

Pentru a determina Gray(n) cu n>1, vom utiliza Gray(n-1) astfel:
Primele 2n-1 secvente din Gray(n) se obtin precedând cu un 0 fiecare dintre cele 2n-1 secvente Gray(n-1).
Ultimele 2n-1 secvente din Gray(n) se obtin precedând cu un 1 fiecare dintre cele 2n-1 secvente din Gray(n-1), considerate în ordine inversa.
Exemplu:

Gray(2) Gray(3)
00
01
11
10
000
001
011
010
110
111
101
100

Codul Gray(n) permite codificarea numerelor naturale din multimea {0, 1, ..., 2n-1}
Ca orice cod si codul Gray trebuie sa permita realizarea operatiilor de codificare/decodificare.
Operatia de codificare
Se da P un numar natural din multimea {0, 1, ..., 2n-1}. Sa se determine numarul natural M a carui scriere în baza 2 este cea de a P-a secventa din Gray(n).
Operatia de decodificare
Se da M un numar natural din multimea {0, 1, ..., 2n-1}. Sa se determine numarul natural P cu proprietatea ca scrierea lui M în baza 2 reprezinta cea de a P-a secventa din Gray(n).

Cerinta
Scrieti un program care sa realizeze operatii de codificare/decodificare.

Date de intrare
Fisierul de intrare gray.in contine o singura linie ce contine 3 valori c n x separate prin câte un singur spatiu. Valoarea c este un caracter ce poate fi doar 'C' sau 'D'. Valoarea n este un numar natural ce indica ordinul codului Gray. Valoarea x este un numar natural din multimea {0, 1, …, 2n-1}. În cazul în care c='C' se cere codificarea numarului x, iar în cazul în care c='D', se solicita decodificarea numarului x.

Date de iesire
Fisierul de iesire gray.out va contine o singura linie pe care va fi scris un singur numar natural, reprezentând valoarea x codificata, respectiv decodificata (în functie de valoarea caracterului c din fisierul de intrare).

Restrictii
n<=500
În codul Gray secventele sunt numerotate de la 0.

Exemple

gray.in gray.out gray.in gray.out

C 3 7

4
D 3 4
7

prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
Contact:emanuela.cerchez@gmail.com

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2007: perechi, teanc, index, light, copaci, teren, pizza, grupe, cod, ecran, drum, soldati, factura, palma, decript, lbd, aven, cs, h, trenuri, sort, spam, complex, parent, holo, tren2, siruri, arce, pasi, cifre, mgo, firma, joc, cartonase, vikingi, anagrame, balbe, vecini, balaur, tribile, conflicte, criptmat, mesaj, maxim, magic3, desen, plimbare, cutie, patrate, party, vagoane, robot, astre, trains, numere2, friends, tricouri, furtuna, net, baby, scaune, 3d, axa, bile2, vmem, pahare, termen, sablon, zapada, cuvinte, excursie, hd, pajura, pc, sir, cadere, pioni
De acelaşi autor: celule, scp, vedete, film, ab, supertri, inginer, camp, sl, detinut, simetric, egal, gropi, ruleta, carti, tgv, uscat, afise, dezbateri, bunici, rv, onu, nspecial, secvop, cadou, chimie, reteta, piticot, petrol, checkin, teanc, index, teren, pizza, ecran, drum, text, lbd, aven, spam, pluricex, tren2, pasi, mgo, joc, anagrame, vecini, criptmat, maxim, cutie, party, friends, net, sablon, hd, pc, sir2, aztec, scara, nr, robot2, sah, formule, ed, bilete, hanoig, flood, matrice3, erdos, grup, cd, kfactor, np, cuc, radio, honest, ref, nr01, scor2, convert, auto2, compress, politics, pm, playlist, barbie, firma1, submatrix, ham, pizza1, exam, ants, teatru1, cifre1, bile1, caini, secvreg, pasune, remi, m01, sir23, tren1, joc5, pachete, aedaro, windows, renju, latime, mere1, piloti, peste, pitici, sirag1, stive, turn1, carti1, program1, spioni, kgb, lift, apel, lex, oras, homeless, subsir, dist, harta1, adevar, joc10, bare, zapezi, masina2, perechi1, raft, joc11, joc12, ferma, fni, tunel, lover, pepsi, transport, avion, monkey, premii1, garaj, carti2, tv, pact, fat, cafea, echipe1, secvente, petrom, peg, scara1, lant, ecuatii, stiva, bile4, jungla, rj, poli, text1, compus1, rez, politie, anag, codul, coment, muzeu, seti, basm, timer, secvsir, dp, placa, prod3, bursa, submdisj, sotron1, fazan, secvpar, joker, lego, medalii, cfr, antipatie, figura, links, segm, colorare, brazi, mobil, distsir, guess, greiere, pestera, conferinta, chei, ny, nx, ghinion, sumb, drenaj, telecomanda, grupuri, mahjong, rotund, viena, sport2, cos, monoton, micro, valet, nr0, maxviz, anagramabil, nrpal, lista, dame, consiliu, adprod, arme, deal, prodnr, compar, latin, interviu, vintage, prize, nrdiv, arrows, tdrept, agenda, reziston, vot2, tema, smiley, relatii, ech, scadere, nebuni, castig, expand, wb, prime2, virgule, b210
Despre baze de numeraţie: balanta, np, nr01, tablou, aritma, joc8, numere6, ceas2, paritate, test1, visul, numere9, accesibil, puteri35, sumb, joct, minmax, stele, secvb, goe, copii, b2k, becuri2, codpatrat, patrate7, cifrab, b210
Despre combinatorică: manevre, carti, bonuri, test, cub, nspecial, circuit, numere, cs, pluricex, parent, 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, logic, 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
Despre numere mari: fib, 2sir, test, sort, siruri, vecini, div, sir2, nrcuv2, scor, hanoig, red, matrice3, pavaj, depou, pm, sqr, set, albine, teatru1, descfib, tub, m01, soldati1, euclid, mutare, munte1, bifo, banda10, sg1, cutii, zumzi, numere7, trapez, patrate6, muguri, impozit, kbiti, m4, numar3, parbit, petrecere, randomizare, radical, ghinion, aliniere, sumb, cavaleri, camera616, numar4, pavari, asfalt, rotund, cos, risipa, xpn, dale, codpatrat, culori1, plus, minm, pomi, cifrab, subsets, doitrei, conjectura, ech, inventie
Despre Inducţie matematică: 2sir, h, poligon, patrate1, set, descfib, suma1, mutare, sir1, prieteni1, excursie1, galax, prieteni2, peg, perfect, borcane, regine, comoara2, domino, arctir, partitie, acoperire1, xpn
Despre operaţii pe biţi: barfa, cod, cartonase, plimbare, excursie, xor, vector, ro, nrbinar, radio, chimie2, dans, metro, caini, newcomp, viteza, bcast, aritma, pereti, morse, paritate, gradina, xor2, game1, efect, gxor, lgdrum, qtri, patrate7, panda, cript
Software recomandat
surse trimise | ajutor