Rezolvare completă PbInfo #2362 balmascat

Un grup de copii participă la un Bal Mascat. Participanții nu pot să-și aleagă singuri costumul. Organizatorii au pregătit exact atâtea costume câți copii sunt. Au ambalat costumele în cutii numerotate și le-au așezat într-o cameră. Copiii intră în camera cu costume și își aleg câte o cutie (la întâmplare). Fiind puși pe glume, organizatorii au scos încălțămintea din anumite cutii, după regula: cutia cu numărul p ramâne fără încălțări, apoi cutia cu numărul 2*p, apoi cutia cu numărul 3*p și așa mai departe până la terminarea cutiilor. Dacă ultima cutie a rămas cu tot costumul, atunci organizatorii scot încălțămintea și din ea. După ce primesc cutiile cu costume, copiii constată că nu se pot deschide decât cu ajutorul unui cod (același la toate cutiile). Organizatorii le dau indicii despre cum să afle codul: se calculează numărul de cutii care au rămas fără încălțăminte, se află ultima cifră din acest număr (notată cu c). Apoi se formează un cod intermediar cu exact 2*p cifre, astfel: dacă c are o valoare diferită de 9, atunci prima cifră (pornind de la stânga numărului) are valoarea (c+1). Dacă c are valoarea 9 atunci prima cifră este (c-1). A doua cifră are valoarea c. A treia cifră este egală cu prima, cifra a patra urmând să fie egală cu a doua și tot așa până se află toate cele 2*p cifre. La final, se taie ultima cifră și ajungem la codul corect cu care se deschid cutiile.

Cerința

Scrieţi un program care să îi ajute pe copii să afle codul cu care se deschid cutiile.

Date de intrare

Fișierul de intrare balmascat.in conţine pe prima linie două valori: un număr natural n ce reprezintă numărul de copii ce participă la balul mascat și un număr p ce reprezintă pasul cu care se stabilesc cutiile din care se scot încălțările.

Date de ieșire

Fișierul de ieșire balmascat.out va conţine codul de acces cu care se deschid cutiile.

Restricții și precizări

  • 11 ≤ n ≤ 10000
  • 1 ≤ p ≤ 8

Exemplul 1:

balmascat.in

15 3

balmascat.out

65656

Explicație

Se află numărul de cutii rămase fără încălțăminte: 5 (cutiile: 3, 6, 9, 12 și 15). Ultima cifră a lui 5 este 5 (c are o valoare diferită de 9 deci folosim pe pozițiile impare cifra obținută din expresia c+1, adică 6). Valoarea lui p este 3, de aceea codul intermediar va avea 2 * p = 6 cifre: 656565 Codul final are doar primele cinci cifre din cel intermediar: 65656.

Exemplul 2:

balmascat.in

421 6

balmascat.out

21212121212

Explicație

Numărul de cutii rămase fără încălțăminte: 71 (cutiile: 6, 12, 18, 24, …., 414, 420 și 421). Ultima cifră a lui 71 este 1. Valoarea pasului p este 6, de aceea codul intermediar va avea 12 cifre iar cel final va avea 11 cifre: 21212121212 (c = 1 deci folosim pe poziții impare valoarea c + 1, adică 2)

Exemplul 3:

balmascat.in

35 4

balmascat.out

8989898

Explicație

Numărul de cutii rămase fără încălțăminte: 9 (cutiile: 4, 8, 12, 16, 20, 24, 28, 32 și 35). Ultima cifră a lui 9 este 9. (c are valoarea 9, deci cifrele de pe poziții impare din cod au valoarea c - 1 = 8 ) Valoarea pasului p este 4, de aceea codul intermediar va avea opt cifre: 89898989 iar codul final va avea șapte cifre: 8989898.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema balmascat:

#include <fstream>
using namespace std;
ifstream fin("balmascat.in");
ofstream fout("balmascat.out");
int n,i,uc,nr_cutii,p;
int main()
{
    fin>>n>>p;
    nr_cutii=n/p;
    if(n%p!=0)
        nr_cutii++;
    uc=nr_cutii%10;
    if(uc==9)
    {
        for(i=1; i<=p-1; i++)
            fout<<uc-1<<uc;
        fout<<uc-1;
    }
    else
    {
        for(i=1; i<=p-1; i++)
            fout<<uc+1<<uc;
        fout<<uc+1;
    }
    fin.close();
    fout.close();
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2362 balmascat

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2362 balmascat de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!