Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace HappyNumbers
- {
- class Program
- {
- static void Main(string[] args)
- {
- int n = int.Parse(Console.ReadLine());
- int secondDigit = 0;
- int firstDigit = 0;
- // В този цикъл минавам през всички 4-цифрени числа.
- for (int i1 = 1000; i1 < 9999; i1++)
- {
- int copyOfCheckedNum = i1; // създавам копие, за да не променям самото 4-цифрено, което е наред
- int sumOne = 0;
- int sumTwo = 0;
- // Тук взимам всяка отделна цифра на поредното 4-цифрено
- for (int i2 = 1; i2 <= 4; i2++)
- {
- if (i2 < 3)
- {
- // така взимам от последната към първата, всяка отделна цифра в числото
- // Когато i2 < 3 взимам последната и предпоследната цифра
- // Т.е. в този if влизам само 2 пъти и 2-та пъти добавям новата цифра към sumOne
- int a = copyOfCheckedNum % 10;
- sumOne += a;
- }
- else
- {
- // Tук също влизам 2 пъти, за да взема втората и най-сетне първата цифра на 4-цифреното
- if(i2 == 3)
- {
- // В този if влизам, хем за да взема 2-та (в моя начин предпоследна цифра),
- // хем за да я запазя, че после тя ми трябва, при проверката, дали n % firstDigit + secondDigit == 0
- secondDigit = copyOfCheckedNum % 10;
- sumTwo += secondDigit;
- }
- else
- {
- // Тук най-после взимам първата цифра на числото
- // И също така я пазя, за да проверя, дали n % firstDigit + secondDigit == 0
- firstDigit = copyOfCheckedNum % 10;
- sumTwo += firstDigit;
- }
- }
- if(i2 < 4)
- {
- // Тази проверка, само за да не променям излишно копието на 4-цифреното повече
- copyOfCheckedNum /= 10;
- }
- else
- {
- // Ако i2 не е по-малко от 4, то или е равно, или е по-голямо
- // във всеки случай, тук вече съм взела всяка отделна цифра от 4-цифреното
- // И вече мога да правя заключения, дали 4-цифреното минава по първото условие
- // Ако sumOne != sumTwo, то няма какво да правя другата провврка, а направо ще
- // разгледам следващото поред 4-цифрено
- if(sumOne == sumTwo)
- {
- // Щом съм влязла тук, то пъврото условие е изпълнено
- // Следва да проверя второто
- int sumFirstSecondDigits = firstDigit + secondDigit;
- if(n % sumFirstSecondDigits == 0)
- {
- // Ако съм влязла тук, то значи е второто условие е true
- // И 4-цифреното ми (i1) е щастливо число, заради, което го изписвам
- Console.Write($"{i1} ");
- }
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement