どーも、みつおです。
問題
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


コメント