Rezolvare completă PbInfo #2484 key

Cristi are în sertar n chei vechi; fiecare a costat o anumită sumă exprimată în lei și fiecare a fost făcută pentru a deschide aceeași ușă. Atât cheile cât și ușa au un cod format din 3 litere. Din păcate, unele chei s-au deteriorat și Cristi le-a împărțit în patru categorii:

  1. stricate – nicio o literă din codul cheii nu coincide cu litera de pe aceeași poziție din codul ușii, iar pentru a o repara trebuie sa plătească prețul integral al cheii;
  2. deteriorate – exact o litera din codul cheii coincide cu litera de pe aceeași poziție din codul ușii, iar pentru a o repara trebuie sa plătească două treimi din prețul cheii;
  3. slab deteriorate – exact două litere din codul cheii coincid cu literele de pe aceleași poziții din codul ușii, iar
    pentru a o repara trebuie sa platească o treime din prețul cheii;
  4. bune – codul cheii e identic cu codul ușii, iar cheia nu trebuie reparată;

Cerințe

1) Să se afle câte chei din fiecare categorie are Cristi.
2) Sa se afle cât a plătit Cristi pentru a repara toate cheile.

Date de intrare

Fișierul de intrare key.in conține pe prima linie un număr P, codul ușii COD și numarul n; dacă P=1 se rezolvă doar cerința 1, iar dacă P=2 se rezolva doar cerința 2. Pe următoarele n linii se citește codul cheii și prețul acesteia.

Date de ieșire

Dacă P=1 se afișează numărul de chei stricate, numărul de chei deteriorate, numărul de chei slab deteriorate și numărul de chei bune separate printr-un spațiu, în aceasta ordine.

Dacă P=2 se afișează doar un număr COST care exprima costul total pentru repararea cheilor.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • P=1 sau P=2
  • orice cod e format din 3 litere
  • orice preț este divizibil cu 3 și aparține intervalului deschis [0,999];
  • la cerința 2, dacă toate cheile sunt bune sau costul total este 0 se afișează doar mesajul GRATIS
  • pentru rezolvarea corectă a cerinței 1 se acordă 30 de puncte, iar pentru rezolvarea corectă a cerinței 2 se acordă 70 de puncte

Exemplu

key.in

1 ABC 4
ABC 15
AXC 9
AFG 3
UYC 30

key.out

0 2 1 1

Explicație

Cristi nu are cheii stricate, dar are două cheii deteriorate, una slab deteriorata și una buna


Exemplu

key.in

2 ABC 4
ABC 15
AXC 9
AFG 3
UYC 30

key.out

25

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 key:

#include <fstream>
char a[4],b[4];int s,d,f,g,P,n,c,t,m,k;
std::ifstream I("key.in");
std::ofstream O("key.out");
int main(){
    I>>P>>a>>n;
    while(n--){
        I>>b>>c;m=0,k=-1;
        while(++k<3)
            if(a[k]==b[k])++m;
        switch(m){
            case 0:t+=c;++s;break;
            case 1:t+=c/3*2;++d;break;
            case 2:t+=c/3;++f;break;
            case 3:++g;break;
        }
    }
    if(P==1)
        O<<s<<' '<<d<<' '<<f<<' '<<g;
    else
        if(t)O<<t;
        else O<<"GRATIS";
}

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 #2484 key

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2484 key 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!