Advertisement
Frumkin

Untitled

Sep 19th, 2021
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. bool palindrome(const std::int32_t number) {
  5.     if (number < 0) return false;
  6.     std::uint8_t totalDigits = static_cast<std::uint8_t>(floor(log10(number))) + 1;
  7.     uint8_t* digits = new std::uint8_t[totalDigits];
  8.     std::int32_t powerOfTen = 1;
  9.     for (std::size_t index = 0; index < totalDigits - 1; index += 1) powerOfTen *= 10;
  10.     std::int32_t slice = number / powerOfTen;
  11.     std::int32_t past = slice;
  12.     digits[0] = slice;
  13.     for (std::size_t index = 1; index < totalDigits; index += 1) {
  14.         powerOfTen /= 10;
  15.         slice = number / powerOfTen;
  16.         past *= 10;
  17.         digits[index] = slice % past;
  18.         past += digits[index];
  19.     }
  20.     for (std::size_t index = 0; index < totalDigits / 2; index += 1) {
  21.         if (digits[index] != digits[totalDigits - index - 1]) {
  22.             return false;
  23.         }
  24.     }
  25.     delete[] digits;
  26.     return true;
  27. }
  28.  
  29. int main() {
  30.     std::int32_t number;
  31.     std::cin >> number;
  32.     std::cout << "The number " + std::to_string(number) + " is " + (palindrome(number) ? "" : "not ") + "a palindrome." << std::endl;
  33.  
  34.     return EXIT_SUCCESS;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement