Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Pandigitals
- {
- class Program
- {
- public static void Main(string[] args)
- {
- var result = new List<int>();
- var nums = new int[100, 10000];
- for (var i = 1; i <= 99; i++)
- for (var j = 123; j <= 9999; j++)
- {
- if (GetDiffMyltiply(i, j) && GetRightNums(i) && GetRightNums(j) &&
- (i.ToString().Length + j.ToString().Length == 5))
- nums[i, j] = i * j;
- if (nums[i, j].ToString().Length == 4 && GetDifference(nums[i, j], i, j))
- result.Add(nums[i, j]);
- }
- Console.WriteLine(result.Distinct().Sum(x=>x));
- Console.ReadKey();
- }
- public static bool GetRightNums(int num)
- {
- var digCount = 0;
- var res = new List<int>();
- var list = new HashSet<int>();
- while (num > 0)
- {
- int mod = num % 10;
- res.Add(mod);
- if (!list.Add(mod) || mod == 0) break;
- num /= 10;
- digCount++;
- }
- return (digCount == res.Count) ? true : false;
- }
- public static bool GetDiffMyltiply(int i, int j)
- {
- var si = i.ToString();
- var sj = j.ToString();
- foreach (var item in si)
- if (sj.Contains(item))
- return false;
- return true;
- }
- public static bool GetDifference(int num, int i, int j)
- {
- var res = new List<char>();
- var si = i.ToString();
- var sj = j.ToString();
- var snum = num.ToString();
- if (!GetRightNums(num)) return false;
- foreach (var itemI in si)
- foreach (var itemJ in sj)
- {
- if (snum.Contains(itemI) || snum.Contains(itemJ))
- return false;
- }
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement