Rezolvare completă PbInfo #3287 cifrazecmax

Cerința

Se consideră un şir de cel puțin 11 şi cel mult un 10.000 de numere naturale, despărțite prin câte un spațiu. Fiecare număr are cel puțin două şi cel mult nouă cifre. Primul termen al şirului are numărul de ordine 1, al doilea are numărul de ordine 2 etc. Se citeşte şirul din fişier şi se cere să se determine numărul de ordine al unui termen al şirului care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa. Dacă sunt mai mulți termeni cu această proprietate se afişează numărul de ordine al primului.

Date de intrare

Fișierul de intrare cifrazecmax.in conține pe prima linie cel puțin 11 şi cel mult un 10.000 de numere naturale, despărțite prin câte un spațiu.

Date de ieșire

Fișierul de ieșire cifrazecmax.out va conține pe prima linie numărul de ordine al termenului care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa.

Restricții și precizări

  • numerele din fișierul de intrare au cel puțin 2 cifre și sunt mai mici decât 1.000.000.000
  • în fișier sunt cel mult 10000 de numere

Exemplul 1:

cifrazecmax.in

12 36 265 18 139 19 32 34 112 14 68

cifrazecmax.out

10

Explicație

10 este numărul de ordine al termenului 14. Pe poziția zecilor sunt 5 cifre de 1, 4 cifre de 3 și 2 cifre de 6. Cel mai mare este 5 corespunzător cifrei 1. Ultimul termen al șirului care are cifra zecilor 1 este 14 și are numărul de ordine 10.

Exemplul 2:

cifrazecmax.in

12 63 265 88 139 19 32 34 68 112 74 

cifrazecmax.out

8

Explicație

8 este numărul de ordine al termenului 34. Pe poziția zecilor sunt 3 cifre de 1, 3 cifre de 3, 3 cifre de 6, o cifră de 8 și una de 7. Contorul cel mai mare este 3 corespunzător cifrelor 1, 3 și 6. Primul termen care este precedat în fişier de un număr maxim de valori care au cifra zecilor egală cu a sa este 34 și are numărul de ordine 8.

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

#include <bits/stdc++.h>
using namespace std;
ifstream f("cifrazecmax.in");
ofstream g("cifrazecmax.out");
#define frq fr[x/10%10]
int main()
{
    int fr[10]={0},x,i=0,poz=0,maxi=0;
    while(f>>x)
    {
        i++;
        frq++;
        if(frq>maxi)
            maxi=frq,poz=i;
    }
    g<<poz;
    f.close();
    g.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 #3287 cifrazecmax

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