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 .
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!