Comment detail

倍数になる13進数 (Nested Flatten)

for文でごり押しの方が速度的には速いのが残念ですが・・・。

せっかくなのでLINQ記法。

Haskellみたいに無限数列が定義できればもっとすっきりするのですが。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    class Program
    {
        static void Main(string[] args)
        {
            for (int i = 10; ; i++)
            {
                if (Create13BaseNum(i) % i == 0)
                {
                    Console.WriteLine(i);
                    break;
                }
            }
            Console.ReadLine();
        }

        public static int Create13BaseNum(int num)
        {
            IEnumerable<char> numCharAry = num.ToString().ToCharArray().Reverse();
            return (int)numCharAry.Select((n, i) => Math.Pow(13, i) * (n - 48)).Sum();
        }
    }

Index

Feed

Other

Link

Pathtraq

loading...