Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- bool palindrome(const std::int32_t number) {
- if (number < 0) return false;
- std::uint8_t totalDigits = static_cast<std::uint8_t>(floor(log10(number))) + 1;
- uint8_t* digits = new std::uint8_t[totalDigits];
- std::int32_t powerOfTen = 1;
- for (std::size_t index = 0; index < totalDigits - 1; index += 1) powerOfTen *= 10;
- std::int32_t slice = number / powerOfTen;
- std::int32_t past = slice;
- digits[0] = slice;
- for (std::size_t index = 1; index < totalDigits; index += 1) {
- powerOfTen /= 10;
- slice = number / powerOfTen;
- past *= 10;
- digits[index] = slice % past;
- past += digits[index];
- }
- for (std::size_t index = 0; index < totalDigits / 2; index += 1) {
- if (digits[index] != digits[totalDigits - index - 1]) {
- return false;
- }
- }
- delete[] digits;
- return true;
- }
- int main() {
- std::int32_t number;
- std::cin >> number;
- std::cout << "The number " + std::to_string(number) + " is " + (palindrome(number) ? "" : "not ") + "a palindrome." << std::endl;
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement