« first day (2175 days earlier)      last day (56 days later) » 

A K
11:05 AM
Прочитал ^^^ и думаю: хрень какая-то, всё в кучу - и IDisposable и Linq и всё подряд... Толи у меня просто неуверенность, что я плохой код пишу, а на деле нет. Толи статьи такие кривые, что никто нормально и по делу не пишет.
 
 
10 hours later…
A K
9:20 PM
Я может туплю под заполночь, но что-то не пойму, как можно избежать переполнения факториалов в шарпе. Вот формула math.factorial(n + m - 2) / ( math.factorial(n - 1) * math.factorial(m - 1) ) , на питоне прекрасно работает, переходишь в шарп - переполнение на больших числах :(
public class Solution
{
    public int UniquePaths(int m, int n)
    {
        ulong a = (ulong)Factorial(n + m - 2);
        ulong b = (ulong)Factorial(n - 1);
        ulong c = (ulong)Factorial(m - 1);
        //$"{a} {b} {c}".Dump();
        return  (int) ( (a / (b *  c)));
    }

    public ulong Factorial(int f)
    {
        if(f == 0)
            return 1;
        else
            return (ulong)f * Factorial(f-1);
    }
}
[TestCase(3, 7, 28)]
[TestCase(3, 2, 3)]
[TestCase(3, 3, 6)]
[TestCase(10, 10, 48620)]
[TestCase(23, 12, 193536720)]
Последний тесткейс вылетает :(
Это расчёт ответа для задачи: leetcode.com/problems/unique-paths
 

« first day (2175 days earlier)      last day (56 days later) »