Rezolvare completă PbInfo #2901 datapal

În vacanța de iarnă Adelina a decis să renunțe la teme și a ales să citească o parte din cărțile aduse de Moș Crăciun: cele cu teme istorice sau SF. Pe măsură ce citea își nota în caiet datele calendaristice ale acelor evenimente care au impresionat-o. După vacanță îi povestește colegului de bancă despre aceste evenimente și remarcă faptul că unele date calendaristice au o formă specială, de palindrom: citite de la dreapta la stânga reprezintă aceeași dată ca atunci când se citesc obișnuit, de la stânga la dreapta.

Cerința

Pentru cele n date calendaristice din agenda Adelinei numărați și afișați câte date palindromice au fost găsite iar apoi precizați secolele cu cele mai multe date palindromice.

Date de intrare

Fișierul de intrare datapal.in conține următoarele informații :
- pe prima linie un număr n reprezentând numărul de date calendaristice;
- pe fiecare dintre următoarele n linii câte o dată calendaristică de forma zz/ll/aaaa (două cifre pentru zi, două cifre pentru lună, patru cifre pentru an) .

Date de ieșire

Fișierul de ieșire datapal.out va conține pe prima linie numărul de date calendaristice palindrom iar pe a doua linie secolele cu cele mai multe date palindrom, în ordine cronologică.

Restricții și precizări

  • 0< n ≤ 1000
  • toate datele calendaristice sunt valide;
  • în colecția de date de test există întotdeauna cel puțin o dată palindromică
  • anii aparțin perioadei 10-9999 și sunt d.Hr.

Exemplu

datapal.in

5
01122110
11111111
19111111
09122190
12111121

datapal.out

4 
12 22

Explicație

Sunt 4 date palindromice: două în secolul 12 și două în secolul 22

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

#include <fstream>
using namespace std;

ifstream fin("datapal.in");
ofstream fout("datapal.out");
int n,i,j,ok,st,dr,maxs,nr,sec;
char d[9],f[100];
int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
    {
        for(j=0; j<8; j++)fin>>d[j];
        ok=1;
        st=0;
        dr=7;
        while(st<dr&&ok==1)
            if(d[st]!=d[dr])ok=0;
            else
            {
                st++;
                dr--;
            }
        if(ok==1)
        {
            nr++;
            sec=(d[4]-'0')*10+d[5]-'0';
            f[sec]++;
            if(f[sec]>maxs)maxs=f[sec];
        }
    }
        fout<<nr<<'\n';
        
        for(i=0; i<=99; i++)if(f[i]==maxs) fout<<i+1<<' ';
        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 #2901 datapal

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