Î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 .
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!