palindrom

Time limit: 0.1s Memory limit: 32MB Input: palindrom.in Output: palindrom.out

Un număr se numește palindrom dacă prima lui cifră este egală cu ultima, a doua cu penultima și așa mai departe. De exemplu numerele 12211221, 505505 și 77 sunt palindromuri, în vreme ce 500500, 14101410 și 24242424 nu sunt palindromuri.

Similar, un număr se numește aproape palindrom dacă are aceleași perechi de cifre identice ca un palindrom, mai puțin o pereche în care cifrele diferă. De exemplu numerele 500500, 14111411, 24442444, 12201220, 5362553625, 1414 și 40144014 sunt numere aproape palindromuri (cu perechea de cifre neidentice îngroșată), în vreme ce 12211221, 14101410, 66, 505505, 2222 și 512125512125 nu sunt numere aproape palindromuri deoarece fie sunt palindromuri, fie au prea multe perechi de cifre diferite.

Mai definim palindromul asociat al unui număr xx ca fiind cel mai mic număr palindrom p strict mai mare decât xx (p>xp > x). De exemplu palindromul asociat al lui 54425442 este 5445, palindromul asociat al lui 24452445 este 25522552, al lui 545545 este 555555, al lui 3999539995 este 4000440004, al lui 500500 este 505505, iar al lui 512125512125 este 512215512215.

Cerință

Scrieți un program care citind un număr natural nenul nn și apoi un șir de nn numere naturale determină:

  1. câte dintre cele nn numere sunt palindrom;
  2. câte dintre cele nn numere sunt aproape palindrom;
  3. palindromurile asociate pentru cele nn numere citite.

Date de intrare

Fișierul de intrare palindrom.in conține pe prima linie un număr CC. Pentru toate testele, CC poate lua numai valorile 11, 22 sau 33. Pe a doua linie se află numărul nn, iar pe a treia linie cele nn numere naturale despărțite prin câte un spațiu.

Date de ieșire

Fișierul de ieșire palindrom.out:

  • dacă C=1C = 1, va conține un singur număr natural reprezentând numărul de numere palindrom din șir;
  • dacă C=2C = 2, va conține numărul de numere din șir care sunt aproape palindrom;
  • dacă C=3C = 3, va conține numerele palindrom asociate celor nn numere din șir, separate prin câte un spațiu.

Restricții și precizări

  • 1n10 0001 \leq n \leq 10 \ 000;
  • 11 \leq numerele din șir 2109\leq 2 \cdot 10^9;
  • Pentru rezolvarea corectă a primei cerințe se acordă 2020 de puncte.
  • Pentru rezolvarea corectă a celei de a doua cerințe se acordă 3030 de puncte.
  • Pentru rezolvarea corectă a celei de a treia cerințe se acordă 5050 de puncte.

Exemplul 1

palindrom.in

1
7
1221 500 53635 505 7 4004 1410

palindrom.out

5

Explicație

Explicație: Cele 55 numere palindrom sunt 12211221, 5363553635, 505505, 77 și 40044004 (CC fiind 11, se rezolvă doar prima cerință)

Exemplul 2

palindrom.in

2
4
5442 2445 545 39995

palindrom.out

3

Explicație

Explicație: Cele 33 numere aproape palindrom sunt 54425442, 24452445 și 3999539995 (CC fiind 22, se rezolvă doar a doua cerință)

Exemplul 3

palindrom.in

3
11
6 1411 2444 1221 505 1220 53625 14 4014 1410 22

palindrom.out

7 1441 2552 1331 515 1221 53635 22 4114 1441 33

Explicație

Explicație: Palindromul asociat lui 66 este 77, al lui 14111411 este 14411441, al lui 24442444 este 25522552 etc. (CC fiind 33, se rezolvă doar a treia cerință)

Log in or sign up to be able to send submissions!