Advertisement
vaakata

Master Numbers

May 24th, 2016
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Numerics;
  4.  
  5.  
  6. namespace MasterNumbers_23._05._2016
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int n = int.Parse(Console.ReadLine());
  13.  
  14.             if (n >= 7)
  15.             {
  16.                 List<int> result = MasterNumbers(n);
  17.  
  18.                 foreach (int number in result)
  19.                 {
  20.                     Console.WriteLine(number);
  21.                 }
  22.             }
  23.         }
  24.  
  25.         static List<int> MasterNumbers(int inputNumber)
  26.         {
  27.             List<int> masterNumbers = new List<int>();
  28.             int currentNumber = 7;          
  29.  
  30.             while (currentNumber <= inputNumber)
  31.             {
  32.                 bool isPalindrome = PalindromeCheck(currentNumber);
  33.  
  34.                 if (isPalindrome)
  35.                 {
  36.                     bool isDigitsSumDiv7 = Div7Check(currentNumber);
  37.  
  38.                     if (isDigitsSumDiv7)
  39.                     {
  40.                         bool hasEvenDigits = EvenDigitsCheck(currentNumber);
  41.  
  42.                         if (hasEvenDigits)
  43.                         {
  44.                             masterNumbers.Add(currentNumber);
  45.                         }
  46.                     }
  47.                 }
  48.                 currentNumber++;
  49.             }
  50.             return masterNumbers;
  51.         }
  52.         static bool PalindromeCheck(int currentNumber)
  53.         {
  54.             bool isPalindrome = false;
  55.             int cntEqualPairs = 0; // pairs of equal Digits
  56.             char[] currNumbDigits = (currentNumber.ToString()).ToCharArray(); // splitting the current number into a separate digits.
  57.             int lengthCurrNumb = currNumbDigits.Length;
  58.  
  59.             for (int iPal = 0; iPal < lengthCurrNumb / 2; iPal++)
  60.             {
  61.                 if (currNumbDigits[iPal] == currNumbDigits[lengthCurrNumb - 1 - iPal])
  62.                 {
  63.                    cntEqualPairs += 1;
  64.                 }
  65.             }
  66.  
  67.             if (cntEqualPairs == lengthCurrNumb / 2)
  68.             {
  69.                 isPalindrome = true;
  70.             }
  71.             else if (cntEqualPairs != lengthCurrNumb / 2)
  72.             {
  73.                 isPalindrome = false;
  74.             }
  75.             return isPalindrome;
  76.         }
  77.         static bool Div7Check(int currentNumber)
  78.         {
  79.             ulong sum = 0; // number digits sum
  80.             bool isSumDigitsDiv7 = false;
  81.  
  82.             while (currentNumber != 0)
  83.             {
  84.                 sum = sum + (ulong)currentNumber % 10;
  85.                 currentNumber /= 10;
  86.             }
  87.  
  88.             if (sum % 7 == 0)
  89.             {
  90.                 isSumDigitsDiv7 = true;
  91.             }
  92.             else if (sum % 7 != 0)
  93.             {
  94.                 isSumDigitsDiv7 = false;
  95.             }
  96.             return isSumDigitsDiv7;
  97.         }
  98.  
  99.         static bool EvenDigitsCheck(int currentNumber)
  100.         {
  101.             bool hasEvenDigit = false;
  102.  
  103.             char[] currNumbDigits = (currentNumber.ToString()).ToCharArray(); // splitting the current number into a separate digits.
  104.             int lengthCurrNumb = currNumbDigits.Length;
  105.  
  106.             for (int iCurr = 0; iCurr < lengthCurrNumb - 1; iCurr++)
  107.             {
  108.                 int currNumbDigit = (int)Char.GetNumericValue(currNumbDigits[iCurr]); // getting the current character Numeric value
  109.  
  110.                 if (currNumbDigit % 2 == 0)
  111.                 {
  112.                     hasEvenDigit = true;
  113.                     break;
  114.                 }
  115.                 else if (currNumbDigit % 2 != 0)
  116.                 {
  117.                     hasEvenDigit = false;
  118.                 }
  119.             }
  120.             return hasEvenDigit;
  121.         }          
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement