Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Program5
- {
- class Program
- {
- public static void Main(string[] args)
- {
- var numbers = new int[100, 10000];
- List<int> res = new List<int>();
- for (var j = 1; j <= 99; j++)
- for (var i = 123; i <= 9999; i++)
- {
- if (GetDifference(numbers[j, i], j, i) && numbers[j, i].ToString().Length == 4)
- res.Add(numbers[j, i]);
- if (GetRightNumbers(j) && GetMultiply(j, i) && GetRightNumbers(i) &&
- (j.ToString().Length + i.ToString().Length == 5))
- numbers[j, i] = j * i;
- }
- Console.WriteLine(res.Distinct().Sum(z => z));
- Console.ReadKey();
- }
- public static bool GetMultiply(int j, int i)
- {
- var stringJ = j.ToString();
- var stringI = i.ToString();
- foreach (var e in stringJ)
- if (stringI.Contains(e))
- return false;
- return true;
- }
- public static bool GetDifference(int number, int j, int i)
- {
- List<char> result = new List<char>();
- var stringJ = j.ToString();
- var stringI = i.ToString();
- var stringOfNumbers = number.ToString();
- if (!GetRightNumbers(number))
- return false;
- foreach (var itemJ in stringJ)
- foreach (var itemI in stringI)
- {
- if (stringOfNumbers.Contains(itemJ) || stringOfNumbers.Contains(itemI))
- return false;
- }
- return true;
- }
- public static bool GetRightNumbers(int num)
- {
- var digitalCount = 0;
- List<int> result = new List<int>();
- HashSet<int> list = new HashSet<int>();
- while (num > 0)
- {
- var mod10 = num % 10;
- result.Add(mod10);
- if (!list.Add(mod10) || mod10 == 0)
- break;
- num /= 10;
- digitalCount++;
- }
- return (digitalCount == result.Count) ? true : false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement