Problem Description
It can be seen that the number, 125874, and its double, 251748, contain exactly the same digits, but in a different order.
Find the smallest positive integer, x, such that 2x, 3x, 4x, 5x, and 6x, contain the same digits.
C#
This problem is simple, we just try each number one by one.
// this is just a guess. private const int MIN_VALUE = 10000; public static void Run() { int num = MIN_VALUE; while (true) { var charArray = num.ToString().ToCharArray(); // if the higest digit of this num is not 1, then we add num by one digit if (charArray[0] != '1') { num = (int)Math.Pow(10, charArray.Length) + 1; } // this is an anonymous function to get the sorted digit string of num Func<int, string> GetDigitStr = delegate(int n) { return string.Concat(n.ToString().ToCharArray().OrderBy(c => c)); }; var digitStr = GetDigitStr(num); bool isOK = true; for (int i = 2; i <= 6; i++) { int temp = num * i; var tempStr = GetDigitStr(temp); if (tempStr != digitStr) { isOK = false; break; } } if (isOK) { Console.WriteLine("result = {0}", num); break; } num++; } }