Advertisement
miroLLL

SpecialNumbers

Jan 30th, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.26 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _05Problem_SpecialNumbers
  4. {
  5.     class Program
  6.     {
  7.  
  8.         static void Main(string[] args)
  9.         {
  10.             //Четем числото, което в случая ни се пада максималното число което трябва да обработим.
  11.             int inputNumber = int.Parse(Console.ReadLine());
  12.  
  13.             // Създаваме си две променливи: sum и divider
  14.             // В sum ще пазим сумата на цифрите на вмомента обработващото се число,
  15.             // а divider ще бъде използван във втория цикъл като променлив делител според цифрите на вмомента обработващото се число
  16.             int sum = 0;
  17.             int divider;
  18.  
  19.             // Пускаме един цикъл от 1 до максималното число (това, което прочетохме в началото)
  20.             for (int currentNumber = 1; currentNumber <= inputNumber; currentNumber++)
  21.             {
  22.                 // Get-ваме си дължината на числото, което обработваме в момента и го записваме в currentNumberLength
  23.                 // за да го използваме като крайна итерация на вложения цикъл.
  24.                 string currentNumberLength = currentNumber.ToString();
  25.  
  26.                 // За да не стават грешки, на всяко ново обработващо се число зачистваме сумата от цифрите на това преди него
  27.                 // и слагаме началната стойност на променливия ни делител
  28.                 sum = 0;
  29.                 divider = 10;
  30.  
  31.                 // Във втория ни цикъл (вложения) въртим от 1 до цифрите на числото, което обработваме вмомента
  32.                 // Пример - Ако числото ни е 5 въртим от 1 до 1 (тоест 1 път).
  33.                 // Ако числото ни е двуцифрено, пример 38 въртим от 1 до 2 (тоест 2 пъти)
  34.                 // Ако числото ни е трицифрено например 123, въртим от 1 до 3 (тоест 3 пъти) и т.н
  35.                 // За да обработим всяка цифра на числото поотделно и да добавим стойността и в sum променливата
  36.                 for (int currentDigit = 1; currentDigit <= currentNumberLength.Length; currentDigit++)
  37.                 {
  38.                     // Тук влизаме само, ако числото ни е едноцифрено или е двуцифрено, но искаме да обработим само първата му цифра
  39.                     if (currentNumber < 10 || currentDigit == 1)
  40.                     {
  41.                         sum += currentNumber % 10;
  42.                         continue;
  43.                     }
  44.                     // Тук намираме цифрите на числото с изключение на първата
  45.                     sum += (currentNumber / divider) % 10;
  46.                     // И след всяка цифра делителя ни скача с *10, за да намерим следващата цифра на числото
  47.                     divider *= 10;
  48.                 }
  49.  
  50.                 // Ако сумата на чифрите на числото, което се е обработвало в дадения момент е равна с условиеето в if-конструкцията
  51.                 // печата числото и true.
  52.                 if ((sum == 5) || (sum == 7) || (sum == 11))
  53.                 {
  54.                     Console.WriteLine($"{currentNumber} -> True");
  55.                 }
  56.                 // В противен случай, числото и false.
  57.                 else
  58.                 {
  59.                     Console.WriteLine($"{currentNumber} -> False");
  60.                 }
  61.             }
  62.         }
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement