Rezolvare completă PbInfo #3383 cifmaxmin1

Petrică și Ionuț au inventat un joc cu numere și cifre pe care l-au numit Cifmaxmin. Ei au la dispoziție n cartonașe cu numere formate din cel puțin două cifre și cel mult nouă cifre, dintre care Petrică alege numerele pare și Ionuț alege numerele impare scrise pe cartonașe. Toate numerele de pe cartonașe au cifrele diferite de 0. Jocul are regulile următoare:

  • Din fiecare număr de pe cartonașul extras se alege cifra cea mai mică denumită cmin și cifra cea mai mare denumită cmax.
  • Pentru fiecare număr par se obține cel mai mare număr format cu cifrele cmin și cmax.
  • Pentru fiecare număr impar se obține cel mai mic număr format cu cifrele cmin și cmax.
  • Dintre numerele determinate de Petrică se alege cel mai mare număr, dintre numerele determinate de Ionuț se alege cel mai mic număr.
  • După ce au terminat de extras cele n cartonașe, fiecare băiat anunță ce număr a obținut conform regulilor jocului și câte cartonașe a extras.
  • Se folosesc toate cartonașele în joc: dacă un cartonaș are număr par, va fi ales de Petrică, dacă are număr impar va fi ales de Ionuț.

Cerința

Scrieți un program care determină și afișează patru numere, în această ordine: numărul obținut de Petrică, câte cartonașe a extras Petrică, numărul obținut de Ionuț și câte cartonașe a extras Ionuț.

Date de intrare

Fișierul de intrare cifmaxmin.in in conține pe prima linie un număr n, reprezentând numărul de cartonașe din joc. Pe a doua linie din fișier se află cele n numere naturale scrise pe cartonașe, separate între ele printr-un spațiu.

Date de ieșire

Fișierul de ieșire cifmaxmin.out va conține patru numere naturale, separate între ele printr-un spațiu, în această ordine: numărul obținut de Petrică, câte cartonașe a extras Petrică, numărul obținut de Ionuț și câte cartonașe a extras Ionuț.

Restricții și precizări

  • 1 < n ≤ 1000
  • Numerele scrise pe cartonașe sunt formate din cel puțin două cifre și cel mult nouă cifre
  • Toate numerele de pe cartonașe au cifrele diferite de 0
  • Cartonașele sunt alese în ordinea în care au fost așezate înainte de începerea jocului
  • Există cel puțin un număr par și cel puțin un număr impar între numerele de pe cartonașe

Exemplu

cifmaxmin.in

5
1839 47536 28 2459 2496

cifmaxmin.out

92 3 19 2

Explicație

Numerele alese de Petrică sunt: 47536, 28 și 2496, din care obține numerele 73, 82 și 92. El a extras 3 numere și numărul cel mai mare este 92. Astfel, din numărul 47536 cifra minimă este 3 și cifra maximă este 7 și se obține numărul 73 etc.
Numerele alese de Ionuț sunt 1839 și 2459, din care obține numerele 19 și 29. El a extras 2 numere și numărul cel mai mic este 19.

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

#include <fstream>

using namespace std;
ifstream fin("cifmaxmin.in");
ofstream fout("cifmaxmin.out");
int n,x,cmin,cmax,nmin,nmax,catepare,cateimpare;
int main()
{
    int i,uc,nr,cx;
    nmin=100;
    nmax=9;
    fin>>n;
    for(i=1; i<=n; i++)
    {
        fin>>x;
        cx=x;
        cmin=9;
        cmax=0;
        while(cx!=0)
        {
            uc=cx%10;
            if(uc<cmin)
                cmin=uc;
            if(uc>cmax)
                cmax=uc;
            cx=cx/10;
        }
        if(x%2==0)
        {
            nr=cmax*10+cmin;
            catepare++;
            if(nr>nmax)
                nmax=nr;
        }
        else
        {
            nr=cmin*10+cmax;
            cateimpare++;
            if(nr<nmin)
                nmin=nr;
        }
    }
    fout<<nmax<<" "<<catepare<<" "<<nmin<<" "<<cateimpare;
    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 #3383 cifmaxmin1

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