using System;
class Program
{
static int CalcFactorial(int k)
{
int result = 1;
for (int i = 2; i <= k; i++)
{
result = result * i;
}
return result;
}
static int CalcCNonRec(int m, int n)
{
return CalcFactorial(m) / (CalcFactorial(n) * CalcFactorial(m - n));
}
static int CalcCRec(int m, int n)
{
if (m <= 1 || n == 0 || n == m)
{
return 1;
}
return CalcCRec(m - 1, n - 1) + CalcCRec(m - 1, n);
}
static void Main()
{
Console.WriteLine("Введіть m (від 0 до 12):");
int m = int.Parse(Console.ReadLine());
Console.WriteLine("Введіть n (від 0 до m):");
int n = int.Parse(Console.ReadLine());
if (n < 0 || n > m || m > 12)
{
Console.WriteLine("Неправильні дані");
}
else
{
Console.WriteLine("За формулою: " + CalcCNonRec(m, n));
Console.WriteLine("Рекурсивно: " + CalcCRec(m, n));
}
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgUHJvZ3JhbQp7CiAgICBzdGF0aWMgaW50IENhbGNGYWN0b3JpYWwoaW50IGspCiAgICB7CiAgICAgICAgaW50IHJlc3VsdCA9IDE7CiAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gazsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogaTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBzdGF0aWMgaW50IENhbGNDTm9uUmVjKGludCBtLCBpbnQgbikKICAgIHsKICAgICAgICByZXR1cm4gQ2FsY0ZhY3RvcmlhbChtKSAvIChDYWxjRmFjdG9yaWFsKG4pICogQ2FsY0ZhY3RvcmlhbChtIC0gbikpOwogICAgfQoKICAgIHN0YXRpYyBpbnQgQ2FsY0NSZWMoaW50IG0sIGludCBuKQogICAgewogICAgICAgIGlmIChtIDw9IDEgfHwgbiA9PSAwIHx8IG4gPT0gbSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQ2FsY0NSZWMobSAtIDEsIG4gLSAxKSArIENhbGNDUmVjKG0gLSAxLCBuKTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi0JLQstC10LTRltGC0YwgbSAo0LLRltC0IDAg0LTQviAxMik6Iik7CiAgICAgICAgaW50IG0gPSBpbnQuUGFyc2UoQ29uc29sZS5SZWFkTGluZSgpKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi0JLQstC10LTRltGC0YwgbiAo0LLRltC0IDAg0LTQviBtKToiKTsKICAgICAgICBpbnQgbiA9IGludC5QYXJzZShDb25zb2xlLlJlYWRMaW5lKCkpOwoKICAgICAgICBpZiAobiA8IDAgfHwgbiA+IG0gfHwgbSA+IDEyKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LTQsNC90ZYiKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoItCX0LAg0YTQvtGA0LzRg9C70L7RjjogIiArIENhbGNDTm9uUmVjKG0sIG4pKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoItCg0LXQutGD0YDRgdC40LLQvdC+OiAiICsgQ2FsY0NSZWMobSwgbikpOwogICAgICAgIH0KICAgIH0KfQ==