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

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


Timp maxim de execuţie/test:
0.1 secunde
Memorie totală disponibilă/stivă:
2 MB/1 MB

Pe vremea mea toţi copiii erau pasionaţi de Piticot. Tabla de joc este frumos colorată şi are pe ea marcat un traseu cu anumite puncte cheie marcate prin L cerculeţe, numerotate de la 1 la L în ordinea de pe traseu. Fiecare jucător are un pion, iar la începutul jocului toţi pionii sunt plasaţi pe cerculeţul de start (cerculeţul cu numărul 1). Scopul jocului este ca pionul tău să ajungă primul în cerculeţul final (cel care are numărul L).
Jucătorii mută alternativ. Când îi vine rândul, jucătorul dă cu zarurile obţinând astfel un număr aleator, apoi mută pionul său înainte cu un număr de cerculeţe egal cu numărul aleator obţinut. Dacă numărul aleator este mai mare decât numărul de cerculeţe până la cerculeţul final, pionul se opreşte în cerculeţul final.
Anumite cerculeţe de pe traseu au asociate anumite acţiuni (de exemplu, "Fă doi paşi înapoi!", "Fă un pas înainte!", "Mai dă o dată cu zarul!"). Când ajunge pe un cerculeţ cu o acţiune asociată jucătorul trebuie să execute acţiunea respectivă. Cerculeţul de start şi cel final nu au nici o acţiune asociată.

Pentru a afla numerele aleatoare obţinute de jucători atunci când dau cu zarul, vom utiliza un generator de numere aleatoare care are ca parametri numerele naturale a, b, c şi x0. Generatorul produce o secvenţă de numere naturale x1, x2, x3, ... după următoarea regulă: xn+1=(a*xn+b)%c (unde % semnifică restul împărţirii întregi), pentru n=0, 1, 2, ... În timpul jocului se utilizează în ordine numerele aleatoare x1, x2, x3, ... (x0 nu este utilizat în joc).

Cerinţă

Scrieţi un program care, cunoscând tabla de joc, parametrii generatorului de numere aleatoare şi numărul de jucători, să determine cine va fi câştigătorul jocului (cine ajunge primul în cerculeţul final).

Date de intrare

Fişierul de intrare piticot.in conţine pe prima linie 4 numere naturale separate prin spaţiu a b c x0 reprezentând parametrii generatorului de numere aleatoare. Pe cea de a doua linie se află două numere naturale separate prin spaţiu K L, K reprezentând numărul de jucători, iar L numărul de cerculeţe de pe traseul de pe tabla de joc. Considerăm că jucătorii sunt numerotaţi de la 1 la K. Pe următoarele L-2 linii sunt descrise în ordine acţiunile asociate cerculeţelor 2, 3, ..., L-1, câte o acţiune pe o linie, sub forma a două numere naturale C P separate prin spaţiu. Dacă C=1 şi P>0 pionul ajuns în acest cerculeţ va avansa cu P cerculeţe (dacă P este mai mare decât numărul de cerculeţe existente până la cerculeţul final, pionul va rămâne în cerculeţul final). Dacă C=1 şi P<0 atunci pionul ajuns în acest cerculeţ va merge înapoi cu -P cerculeţe (dacă -P este mai mare decât numărul de cerculeţe existente până la cerculeţul de start, pionul va fi plasat în cerculeţul de start). Dacă C=1 şi P=0 jucătorul trebuie să mai dea o dată cu zarul (adică pionul său va avansa cu următorul număr aleator din secvenţa de numere aleatoare generată). Dacă C=0 atunci şi P=0 şi înseamnă că cerculeţul corespunzător nu are nici o acţiune asociată. C poate avea doar valorile 0 şi 1

Date de ieşire

Fişierul de ieşire piticot.out va conţine două linii; pe prima linie va fi scris un numărul jucătorului care câştigă jocul, iar pe cea de a doua linie numărul total de mutări efectuate în joc (ori de câte ori un pion este ridicat de pe tablă se consideră că s-a efectuat o mutare).

Restricţii

  • 0 ≤ a, b, x0 ≤ 1000
  • 0 < c ≤ 1000
  • 1 ≤ K, L ≤ 1 000
  • Se garantează că jocul se termină.

Exemplu

piticot.in piticot.out Explicatie
1 1 100 1
2 6
0 0
1 -3
1 0
1 1
2
4

a=1, b=1, c=100, x0=1. Secvenţa de numere aleatoare generată este: 2, 3, 4, 5, 6, 7, 8, 9, ...

Iniţial toţi pionii jucătorilor sunt în cerculeţul 1. Primul jucător dă cu zarul, obţine valoarea 2 şi avansează în cerculeţul 3 (mutare 1). Deoarece acest cerculeţ are asociată o acţiune, jucătorul 1 trebuie să execute acţiunea respectivă (se întoarce în cerculeţul de start - mutare 2). Este rândul jucătorului 2, acesta dă cu zarul, obţine valoarea 3, ajunge în cerculeţul 4 (mutare 3), care are asociată o acţiune (jucătorul trebuie să mai dea o dată cu zarul, obţine valoarea 4, avansează în cerculeţul final - mutare 4 - şi câştigă jocul).
prof. Emanuela Cerchez
Liceul de Informatică „Grigore Moisil” Iaşi
emanuela.cerchez@gmail.com
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la OMI Iaşi 2009: replace, roci, petrol, barca
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, petrol, checkin, teanc, index, teren, pizza, ecran, drum, text, lbd, aven, spam, pluricex, tren2, gray, 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 vector: trei, simetric, egal, ruleta, pod, uscat, afise, an, bunici, cursa, onu, tramvai, cadou, kpal, expresie, roci, petrol, grad, ruleta2, ecran, palma, concurs, holo, ab2, tren2, cifre, mgo, firma, anagrame, joc2, br, maxim, astre, numere2, baby, zapada, hd, startrek, vecini2, drept, teatru, tir, patrate2, nr, cifra, repeat, unu, criptare, ratb, placi, sume3, turist, matrice3, pavaj, sume, kafka, bacan, spair, grup, friends2, bitslang, fisc, scor2, cat, nr3, chimie2, zid, politics, submat, reteta2, rezervatie, creioane, felinare, 2numere, exp, scoici, patrate1, playlist, sqr, carte, oua, turn, ants, div3, jeton, politic, trecere, maraton, zaruri, suma1, mere1, agitatie, lacuri, secv, sotron, triunghi, carti1, spioni, kalah, excursia, matricea, maxq, oras, furnici, baschet, ingerasi, numar1, prieteni, aritma, cezar, bifo, pal, seceta, bare, soricel1, antena, avere, paianjen, bloc, schi, suma3, fractie, tunel, pepsi, prefix, tren3, avion, premii1, csir, top, bsir, secvente, cod4, cuburi3, limbaj, panouri, sant1, zumzi, sport1, baschet1, mere3, powerpuff, placare, sir4, volei1, tabel, ocr, numere7, lacusta, flori, pluton, elfi, mare, grupe1, maroco, cartonas, cabina, case, cod5, furnica, numere8, paritate, comoara1, exponent, control, exp1, joc13, popas, reactivi, siruri1, vanatoare, submult, text1, taxe1, visul, paranteze, puncte3, cub3, numere9, panglica, pietre, poartas, sume2, bal, secvsir, vot, prefix1, accesibil, palc, standard, bursa, meteo, jetoane, printesa, palindrom, joker, matriosca, loto, cuvant, cladiri1, secvente1, zar, tren4, asociativ, lego, medalii, figura, joc14, neuroni, char, dartz, turism1, calorii, xor1, paltrei, album, livada1, colorare, greutati, brazi, submatrix1, plaja, cd1, cifru3, permutare, miere, tetris1, conferinta, atelier, radical, bileprime, nx, atletism, sumb, minmax, sumacifre, jocprim, sircifre, cmmdcsecv, secvb, siruri3, cifru4, vase, carte1, grad1, litere, magic6, macheta, butoane, ec, stalpi2, fagure, goe, papusa, taburet, mesaj3, zar1, joc16, talent, joc18, cos, punctfix, risipa, liste, triburi, nr0, oneton, nor, nrpomi, paisprezece, anagramabil, zuma, joc20, dale, perechi2, consiliu, becuri2, codpatrat, adprod, qtri, reconst, arme, triunghi4, deal, ozn1, cifru5, flori1, elicop, roata, trifoi, maxbin, culori2, numar5, bile6, proiecte, alune, cuburi4, sstabil, intersectii, copaci2, 7segmente, amedie, drept2, divider, eliminare, matd3, prodnr, fraze, vectori1, compar, unific, galbeni, clepsidru, calcule, puncte6, maxp, cursa1, secvp, swap, extraprime, onigim, divizori1, remi1, tetris3, amestec, eoliene, split, momente, secvente2, ausoara, aranjare2, vintage, binremove, sminus, subsets, interclasare, palindromuri, colina, doitrei, rebus1, tcif, munte3, triunghi6, schi1, rascoala, solitar, praslea, vot2, tema, sprime, sir2dif, aperm, unudoi, prajituri, tan, concurs4, ech, arc, dominant, ordine, tv1, nebuni, sort2dist, lightbot, iepuras1, castig
Software recomandat
surse trimise | ajutor