どーも、みつおです。
問題
192 に 1, 2, 3 を掛けてみよう.
192 × 1 = 192
192 × 2 = 384
192 × 3 = 576積を連結することで1から9の パンデジタル数 192384576 が得られる. 192384576 を 192 と (1,2,3) の連結積と呼ぶ.
同じようにして, 9 を 1,2,3,4,5 と掛け連結することでパンデジタル数 918273645 が得られる. これは 9 と (1,2,3,4,5) との連結積である.
整数と (1,2,…,n) (n > 1) との連結積として得られる9桁のパンデジタル数の中で最大のものはいくつか?
出典:Problem38
解答
using System; using System.Linq; namespace Problem38 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static int Solve() { int ret = 0; int num = 0; string strnum = ""; //パンデジタル判定式 Predicate<string> IsPandigi = A => A.OrderBy(B => B).SequenceEqual("123456789"); //掛ける数 for (int i = 1; i <= 9999; i++) { //初期化 strnum = ""; //掛けられる数 for(int j = 1;j <= 9;j++) { //連結積 strnum += (i * j).ToString(); //文字列が9を超えてたらループ終了 9以下なら連結積をもう一度求める if (9 < strnum.Length) break; else if (strnum.Length < 9) continue; //パンデジタル判定 if(IsPandigi(strnum)) { num = int.Parse(strnum); //パンデジタル数の最大値判定 if (ret < num) ret = num; } } } return ret; } } }
出力
932718654