c# перестановка с повтором

хочу сделать перестановку с повтором, но идей совсем нет, хоть и формула на руках, подскажите пожалуйста как это можно реализовать на с# , новичок , не судите строго. код:

using System;      
class Program{
  
static long Factorial(double max)
{
  //int i=0;
  long s=1;
  //int n=0;
  //Console.ReadLine();
  if (max==0){return 1;}
  else for (long i = 1; i <= max; i++)
   {s*=i;
    //Console.WriteLine(i);
   }  
  
return s;    
}
     public static void Main()
  {
    //return Factorial(50);
    Console.WriteLine("Введите n,m");
    double n=Console.Read();
    double m=Console.Read();
    float С1=Factorial((m+n-1)/Factorial((m-1)*Factorial(n))); //Сочетание- Повтор есть
    float C=Factorial(n)/(Factorial(m)*Factorial(n-m));      //Сочетание -Повтора нет    
    double A1=Math.Pow(m,n);// Размещение повтор есть
    float A=Factorial(n)/Factorial(n-m);//Размещение повтора нет
    float P =Factorial(n); //Перестановка -Повтора нет 
  }
}

Ответы (0 шт):