Advertisement
yahorrr

Untitled

Sep 15th, 2022
993
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.64 KB | None | 0 0
  1. using System;
  2. using System.Reflection.Metadata.Ecma335;
  3.  
  4. namespace PalindromicNumberTask
  5. {
  6.     /// <summary>
  7.     /// Provides static method for working with integers.
  8.     /// </summary>
  9.     public static class NumbersExtension
  10.     {
  11.         /// <summary>
  12.         /// Determines if a number is a palindromic number, see https://en.wikipedia.org/wiki/Palindromic_number.
  13.         /// </summary>
  14.         /// <param name="number">Verified number.</param>
  15.         /// <returns>true if the verified number is palindromic number; otherwise, false.</returns>
  16.         /// <exception cref="ArgumentException"> Thrown when source number is less than zero. </exception>
  17.         public static bool IsPalindromicNumber(int number)
  18.         {
  19.             if (number < 0)
  20.             {
  21.                 throw new ArgumentException("number is less than 0", nameof(number));
  22.             }
  23.  
  24.             int length = IntLength(number);
  25.  
  26.             return IsPalindromicNumber(number, (int)Math.Pow(10, length - 1));
  27.         }
  28.  
  29.         private static int IntLength(int number)
  30.         {
  31.             int length = 0;
  32.             do
  33.             {
  34.                 length++;
  35.                 number /= 10;
  36.             }
  37.             while (number != 0);
  38.  
  39.             return length;
  40.         }
  41.  
  42.         private static bool IsPalindromicNumber(int number, int pow)
  43.         {
  44.             if (number < 10)
  45.             {
  46.                 return true;
  47.             }
  48.  
  49.             if (number / pow != number % 10)
  50.             {
  51.                 return false;
  52.             }
  53.  
  54.             return IsPalindromicNumber((number % pow) / 10, pow / 100);
  55.         }
  56.     }
  57. }
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement