Rezolvare completă PbInfo #2350 grup

Ionel este pasionat de problemele cu șiruri de numere naturale. Pornind de la un șir dat, el numește grup un subșir de numere care se formează după criterii precizate. De aceasta dată, el alege două criterii:
Criteriul 1: grupează numerele după prima lor cifră. De exemplu, numerele 231 și 2745 aparțin aceluiași grup deoarece ambele încep cu aceeași cifră (2).
Criteriul 2: pune în același grup toate numerele care au în componența lor aceleași cifre, indiferent de numărul de apariții a fiecărei cifre. De exemplu, numerele 234372 și 3224727 vor fi plasate în același grup deoarece în componența ambelor intră cifrele 2, 3, 4 si 7, și numai acestea.

Cerința

Scrieţi un program care, pentru un şir dat de n numere naturale, rezolvă următoarele cerințe:

  1. determină numărul minim dintre numerele aparținând celui mai numeros grup care se formează conform Criteriului 1. Dacă sunt mai multe grupuri cu număr maxim de elemente, se va determina numărul minim din grupul pentru care prima cifra este cea mai mică.
  2. determină numărul de elemente ale celui mai numeros grup care se formează conform Criteriului 2.

Date de intrare

Fișierul de intrare grup.in conţine pe prima linie două numere naturale n și c, separate printr-un spațiu. Valoarea lui c este 1 sau 2, în funcție de cerința problemei. Pe a doua linie se găsesc n numere naturale, separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire grup.out va conţine pe prima linie rezultatul cerut în funcție de cerința indicată în fișierul de intrare.

Restricții și precizări

  • 0 < n ≤ 10000
  • Valorile din șirul de intrare sunt numere naturale cu maxim 9 cifre.

Exemplul 1:

grup.in

7 1
73532 344 739 34343 34 735 23757

grup.out

34

Explicație

c = 1; Se formează următoarele grupuri:
G1: 73532, 739, 735 (încep cu cifra 7)
G2: 344, 34343, 34 (încep cu cifra 3)
G3: 23753 (începe cu cifra 2)
G1 si G2 au număr maxim de elemente (3) dar se va afișa minimul din grupul G2 (34).

Exemplul 2:

grup.in

7 2
73532 344 739 34343 34 433 23757

grup.out

4

Explicație

c = 2; Se formează următoarele grupuri:
G1: 73532, 23757 (cifrele 2, 3, 7, 5)
G2: 739 (cifrele 3, 7, 9)
G3: 344, 34343, 34, 433 (cifrele 3, 4)
G3 are numărul maxim de elemente (4)

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

#include <fstream>
using namespace std;

int NR[11], M[11], a[1025], n;

int PrimaCifra(int n)
{
    while (n > 9)
        n /= 10;
    return n;
}

int main()
{
    int i, c, x, optiune;
    ifstream fin("grup.in");
    ofstream fout("grup.out");
    fin >> n >> optiune;
    if (optiune == 1)
    {
        for (i = 0; i <= 9; i++)
            M[i] = 1000000000;
        for (i = 1; i <= n; i++)
        {
            fin >> x;
            c = PrimaCifra(x);
            NR[c]++;
            M[c] = min(M[c], x);
        }
        x = NR[0];
        c = M[0];
        for (i = 1; i <= 9; i++)
            if (NR[i] > x)
            {
                x = NR[i];
                c = M[i];
            }
            else if (x == NR[i]) c = min(c, M[i]);
        fout << c << "\n";
    }
    else
    {
        for (i = 1; i <= n; i++)
        {
            fin >> x;
            c = 0;
            if (x == 0) c = 1;
            else while (x > 0)
            {
                c = c | (1 << (x % 10));
                x /= 10;
            }
            a[c]++;
        }
        x = a[0];
        for (i = 1; i <= 1024; i++)
            x = max(x, a[i]);
        fout << x << "\n";
    }
    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 #2350 grup

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