読者です 読者をやめる 読者になる 読者になる

Project Euler 24

Problem 24

using System;
using System.Collections.Generic;
using System.Linq;

class PE024 {
    static long Fact(long n) {
        if (n == 0) return 1;
        else return n * Fact(n-1);
    }

    static string Calc(long n) {
        var ans = new List<int>();
        var digits = Enumerable.Range(0, 10).ToList();

        while (digits.Count > 0) {
            long cnt = Fact(digits.Count - 1);

            int p = (int)(n/cnt);
            ans.Add(digits[p]);
            digits.RemoveAt(p);
            n %= cnt;
        }
        return string.Join("", ans);
    }

    static void Main() {
        Console.WriteLine(Calc(1000000-1));
    }
}