Advertisement
Guest User

32

a guest
Sep 18th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.25 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Pandigitals
  8. {
  9.     class Program
  10.     {
  11.         public static void Main(string[] args)
  12.         {
  13.             var result = new List<int>();
  14.             var nums = new int[100, 10000];
  15.             for (var i = 1; i <= 99; i++)
  16.                 for (var j = 123; j <= 9999; j++)
  17.                 {
  18.                     if (GetDiffMyltiply(i, j) && GetRightNums(i) && GetRightNums(j) &&
  19.                         (i.ToString().Length + j.ToString().Length == 5))
  20.                         nums[i, j] = i * j;
  21.                     if (nums[i, j].ToString().Length == 4 && GetDifference(nums[i, j], i, j))
  22.                         result.Add(nums[i, j]);                    
  23.                 }
  24.             Console.WriteLine(result.Distinct().Sum(x=>x));
  25.             Console.ReadKey();
  26.         }
  27.  
  28.         public static bool GetRightNums(int num)
  29.         {
  30.             var digCount = 0;
  31.             var res = new List<int>();
  32.             var list = new HashSet<int>();
  33.             while (num > 0)
  34.             {
  35.                 int mod = num % 10;
  36.                 res.Add(mod);
  37.                 if (!list.Add(mod) || mod == 0) break;
  38.                 num /= 10;
  39.                 digCount++;                
  40.             }
  41.             return (digCount == res.Count) ? true : false;
  42.         }
  43.  
  44.         public static bool GetDiffMyltiply(int i, int j)
  45.         {
  46.             var si = i.ToString();
  47.             var sj = j.ToString();
  48.             foreach (var item in si)
  49.                 if (sj.Contains(item))
  50.                     return false;
  51.             return true;
  52.         }
  53.  
  54.         public static bool GetDifference(int num, int i, int j)
  55.         {
  56.             var res = new List<char>();
  57.             var si = i.ToString();
  58.             var sj = j.ToString();
  59.             var snum = num.ToString();
  60.             if (!GetRightNums(num)) return false;
  61.             foreach (var itemI in si)
  62.                 foreach (var itemJ in sj)
  63.                 {                    
  64.                     if (snum.Contains(itemI) || snum.Contains(itemJ))
  65.                         return false;
  66.                 }
  67.             return true;
  68.         }
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement