Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Numerics;
- namespace MasterNumbers_23._05._2016
- {
- class Program
- {
- static void Main(string[] args)
- {
- int n = int.Parse(Console.ReadLine());
- if (n >= 7)
- {
- List<int> result = MasterNumbers(n);
- foreach (int number in result)
- {
- Console.WriteLine(number);
- }
- }
- }
- static List<int> MasterNumbers(int inputNumber)
- {
- List<int> masterNumbers = new List<int>();
- int currentNumber = 7;
- while (currentNumber <= inputNumber)
- {
- bool isPalindrome = PalindromeCheck(currentNumber);
- if (isPalindrome)
- {
- bool isDigitsSumDiv7 = Div7Check(currentNumber);
- if (isDigitsSumDiv7)
- {
- bool hasEvenDigits = EvenDigitsCheck(currentNumber);
- if (hasEvenDigits)
- {
- masterNumbers.Add(currentNumber);
- }
- }
- }
- currentNumber++;
- }
- return masterNumbers;
- }
- static bool PalindromeCheck(int currentNumber)
- {
- bool isPalindrome = false;
- int cntEqualPairs = 0; // pairs of equal Digits
- char[] currNumbDigits = (currentNumber.ToString()).ToCharArray(); // splitting the current number into a separate digits.
- int lengthCurrNumb = currNumbDigits.Length;
- for (int iPal = 0; iPal < lengthCurrNumb / 2; iPal++)
- {
- if (currNumbDigits[iPal] == currNumbDigits[lengthCurrNumb - 1 - iPal])
- {
- cntEqualPairs += 1;
- }
- }
- if (cntEqualPairs == lengthCurrNumb / 2)
- {
- isPalindrome = true;
- }
- else if (cntEqualPairs != lengthCurrNumb / 2)
- {
- isPalindrome = false;
- }
- return isPalindrome;
- }
- static bool Div7Check(int currentNumber)
- {
- ulong sum = 0; // number digits sum
- bool isSumDigitsDiv7 = false;
- while (currentNumber != 0)
- {
- sum = sum + (ulong)currentNumber % 10;
- currentNumber /= 10;
- }
- if (sum % 7 == 0)
- {
- isSumDigitsDiv7 = true;
- }
- else if (sum % 7 != 0)
- {
- isSumDigitsDiv7 = false;
- }
- return isSumDigitsDiv7;
- }
- static bool EvenDigitsCheck(int currentNumber)
- {
- bool hasEvenDigit = false;
- char[] currNumbDigits = (currentNumber.ToString()).ToCharArray(); // splitting the current number into a separate digits.
- int lengthCurrNumb = currNumbDigits.Length;
- for (int iCurr = 0; iCurr < lengthCurrNumb - 1; iCurr++)
- {
- int currNumbDigit = (int)Char.GetNumericValue(currNumbDigits[iCurr]); // getting the current character Numeric value
- if (currNumbDigit % 2 == 0)
- {
- hasEvenDigit = true;
- break;
- }
- else if (currNumbDigit % 2 != 0)
- {
- hasEvenDigit = false;
- }
- }
- return hasEvenDigit;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement