ConcursC++17

Movedel

Se consideră două șiruri de caractere AA și BB, ambele șiruri având același număr de caractere.

Asupra șirurilor se aplică următorul algoritm:

  • șirul AA se permută circular cu kik_i poziții spre stânga
  • din cele două șiruri se elimină caracterele care coincid din punct de vedere al poziției și valorilor

Algoritmul se oprește când fie ambele șiruri devin vide, fie șirurile nu mai au caractere comune. Valoarea kik_i pentru fiecare pas ii reprezintă al ii-lea număr prim din mulțimea numerelor prime.

Cerinţă

Dându-se NN și MM, să se genereze șirurile AA și BB, ambele având lungimea NN, astfel încât numărul de repetări ale algoritmului aplicat celor două șiruri să fie MM.

Date de intrare

Fişierul de intrare movedel.in conţine pe prima linie valorile NN și MM.

Date de ieșire

În fişierul de ieşire movedel.out se vor scrie șirurile de caractere AA și BB de lungime NN, fiecare pe câte un rând.

Restricții și precizări

  • Șirurile trebuie să conțină doar litere mici ale alfabetului englez.
  • În cazul în care algoritmul efectuează cel puțin MM repetări pentru șirurile afișate, se va obține punctajul maxim pentru test. În caz contrar se vor obține [XM⋅10][\frac{X}{M}\cdot10] puncte pe test, unde XX este numărul de repetări ale algoritmului (prin [XM][\frac{X}{M}] se înțelege partea întreagă a numărului XM\frac{X}{M}).
  • Se garantează că există soluție pentru datele de test:
Testul00112233445566778899
NN23232323505010010050501001005005001 0001 \ 0001 5501 \ 5502 0002 \ 000
MM50501071072502501601601001007007001 5001 \ 5008 0008 \ 00012 00012 \ 00016 00016 \ 000

Exemplul 1

movedel.in

3 5

movedel.out

abc
cba

Explicație

Prima aplicare a algoritmului:

cab - după permutarea spre stânga cu 22 poziții (22 - primul număr prim), după eliminarea caracterelor comune, cele două șiruri vor fi:

  • ab
  • ba

A doua aplicare a algoritmului:

ba - după permutarea spre stânga cu 33 poziții (33 – al doilea număr prim), după eliminarea caracterelor comune, cele două șiruri devin vide, algoritmul încheindu-se.

Astfel se obțin [25⋅10]=4[\frac{2}{5}\cdot10]=4 puncte pentru acest test

Exemplul 2

movedel.in

5 5

movedel.out

abcde
edabc

Explicație

Pentru șirurile găsite, algoritmul se încheie după 2020 de etape.

Astfel se obțin 1010 puncte

Sursă și autori

ONI 2016, clasele 10. Adrian Budău, Eugen Nodea.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑