Grade 9 · Digits of a numberCitește în română

Palindrome number

Original: Număr palindrom

O(n)C++1741 lines2 examples

The idea

A number is a palindrome if it reads the same from left to right and from right to left, i.e. it is equal to its reverse. We work on a copy, because the loop destroys the number.

Original description (Romanian)

Un număr este palindrom dacă se citește la fel de la stânga la dreapta și de la dreapta la stânga, adică este egal cu oglinditul său. Lucrăm pe o copie, pentru că bucla distruge numărul.

Complexity
O(k), where k is the number of digits of n
Grade
Grade 9 (Clasa a IX-a)

Examples

Example 1

Input

12321

Expected output

DA
Example 2

Input

1231

Expected output

NU

The code

Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.

numar-palindrom.cpp
/*
 * Titlu: Număr palindrom
 * Clasa: 9
 * Capitol: Cifrele unui număr
 * Descriere: Un număr este palindrom dacă se citește la fel de la stânga la
 *            dreapta și de la dreapta la stânga, adică este egal cu oglinditul
 *            său. Lucrăm pe o copie, pentru că bucla distruge numărul.
 * Complexitate: O(k), unde k este numărul de cifre ale lui n
 *
 * Exemplu
 * Intrare: 12321
 * Ieșire: DA
 *
 * Exemplu
 * Intrare: 1231
 * Ieșire: NU
 */
#include <iostream>
using namespace std;

int main()
{
    long long n, copie, ogl = 0;
    cin >> n;
    copie = n;
    while (copie > 0)
    {
        ogl = ogl * 10 + copie % 10;
        copie = copie / 10;
    }
    if (ogl == n)
    {
        cout << "DA" << '\n';
    }
    else
    {
        cout << "NU" << '\n';
    }
    return 0;
}

Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.