Advertisement
Guest User

Nine-Digit Magic Numbers

a guest
Apr 9th, 2015
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace NineDigitMagicNumbers
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             // input
  12.             int sum = int.Parse(Console.ReadLine());
  13.             int diff = int.Parse(Console.ReadLine());
  14.  
  15.             // declarations
  16.             IEnumerable<string> combinations = CombinationsWithRepition("1234567", 3);
  17.             List<string> workCopy = combinations.ToList();
  18.             List<int> numbers = workCopy.Select(int.Parse).ToList();
  19.             List<int> result = new List<int>();
  20.  
  21.             for (int i = 0; i < numbers.Count; i++)
  22.             {
  23.                 for (int j = i + 1; j < numbers.Count; j++)
  24.                 {
  25.                     for (int k = j + 1; k < numbers.Count; k++)
  26.                     {
  27.                         string temp1 = workCopy[i] + workCopy[j] + workCopy[k];
  28.                         int temp2 = int.Parse(temp1);
  29.                         int tempSum = 0;
  30.                         for (int l = 1; l <= 9; l++)
  31.                         {
  32.                             tempSum += GetDigit(temp2, l);
  33.                         }
  34.  
  35.                         if (tempSum == sum && (numbers[k] - numbers[j] == diff) && (numbers[j] - numbers[i] == diff))
  36.                         {
  37.                             result.Add(temp2);
  38.                         }
  39.                     }
  40.                 }
  41.             }
  42.  
  43.             if (result.Count > 0)
  44.             {
  45.                 foreach (var item in result)
  46.                 {
  47.                     Console.WriteLine(item);
  48.                 }
  49.             }
  50.             else
  51.             {
  52.                 Console.WriteLine("No");
  53.             }
  54.         }
  55.         static String Convert(string symbols, int number, int totalLen)
  56.         {
  57.             var result = "";
  58.             var len = symbols.Length;
  59.             var nullSym = symbols[0];
  60.             while (number > 0)
  61.             {
  62.                 var index = number % len;
  63.                 number = number / len;
  64.                 result = symbols[index] + result;
  65.             }
  66.             return result.PadLeft(totalLen, nullSym);
  67.         }
  68.  
  69.         static IEnumerable<String> CombinationsWithRepition(string symbols, int len)
  70.         {
  71.             for (var i = 0; i < Math.Pow(symbols.Length, len); i++)
  72.                 yield return Convert(symbols, i, len);
  73.         }
  74.  
  75.         static int GetDigit(int number, int digit)
  76.         {
  77.             return (number / (int)Math.Pow(10, digit - 1)) % 10;
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement