Informatică, întrebare adresată de someone21, 8 ani în urmă

Help pls la problema asta cine se pricepe la info

Semipalindrom
Pe Mara o fascinează numerele speciale. Ea a inventat noţiunea de număr semipalindrom, dând acest nume numerelor care au două jumătăţi identice. De exemplu, numărul 1313 este un astfel de număr deoarece, prin secţionarea acestuia la jumătate rezultă două numere egale: 13 şi 13. De asemenea, un alt exemplu de astfel de număr este 13713. Mara spune că dacă secţionăm un astfel de număr obţinem tot două numere egale: 13 şi 13, ignorând practic cifra din mijloc.

Cerinţă
Dându-se un numar natural n, să se afiseze in fişierul semipalindrom.out jumătatea acestuia în cazul în care acesta este Semipalindrom sau prima cifră a numărului n, în cazul în care numărul n nu este semipalindrom.

Date de intrare
Fişierul de intrare semipalindrom.in conţine pe prima linie numărul n.

Date de ieşire
În fişierul de ieşire semipalindrom.out se va afişa un singur număr reprezentând jumătatea numărului n, dacă numărul este semipalindrom sau prima cifră a numărului n, dacă acesta nu este semipalindrom.

Restricţii
1 ≤ n ≤ 999999999 (n are maxim 9 cifre)

Răspunsuri la întrebare

Răspuns de crow9920
0

#include <fstream>

using namespace std;

int main() {

   ifstream fin ("semipalindrom.in");

   ofstream fout ("semipalindrom.out");

   int n;

   fin >> n;

   int aux = n;

   int nrcifre = 0;

   while (aux) {

       nrcifre++;

       aux /= 10;

   }

   int div = 1;

   for (int i = 0; i < nrcifre / 2; i++)

       div *= 10;

   int jumatatedreapta = n % div;

   n /= div;

   if (nrcifre % 2 == 1)

       n /= 10;

   int jumatatestanga = n;

   if (jumatatedreapta == jumatatestanga) {

       fout << jumatatedreapta;

   } else {

       int primacifra;

       while (n > 9)

           n /= 10;

       primacifra = n;

       fout << primacifra;

   }

   return 0;

}

Alte întrebări interesante