рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ

рдПрдХ рджрд┐рди, рдЧрдгрд┐рдд рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╢реНрдиреЛрддреНрддрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реБрдП ( math.stackexchange.com ), рдореБрдЭреЗ рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЧреБрдгрд╛рдВрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдорд┐рд▓рд╛ рдФрд░ рдЙрд╕рдиреЗ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рджрд┐рдЦрд╛рдИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдПрдХ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рд╣реИред рддреЛ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрднрд╡рд╣реАрди рддрд░реАрдХрд╛, рдЬрд┐рд╕рдореЗрдВ рдпреЛрдЧ рдХреЗ рдЧреБрдгрди рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рднрд╛рдЬреНрдп рдХреЗ рдЧреБрдгрди рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдЧрдгрдирд╛ рдпреВрдВрдЯ рдХреЗ рдереЛрдбрд╝рд╛ рдЧреНрд░рд┐рдб рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдКрдкрд░реА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд░реЗ рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рднреАрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдиред рдореБрдЭреЗ рдпрд╣ рдХрд╛рд░реНрдп рдкрд╕рдВрдж рдЖрдпрд╛, рдФрд░ рдореИрдВ рддреБрд░рдВрдд рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрда рдЧрдпрд╛ рдФрд░ рддреАрди рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ред рдЕрдиреНрдп рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рдореИрдВрдиреЗ рдЕрдиреНрдп рдЙрддреНрддрд░реЛрдВ рд╕реЗ рдЙрдзрд╛рд░ рд▓реА рд╣реИрдВред рддреЛ, рд▓реЗрдЦ рдЙрди рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдФрд░ рддреБрд▓рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ C # рдХреЗ рддрд╣рдд .NET рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛ред


рдЖрдЧреЗ, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдБрдЧрд╛ред

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛


рдмреЗрд╢рдХ, рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдИ, рд╡рд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрд┐рдЧрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдерд╛, рдЬреЛ рдЕрдВрдХреЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░, рджреВрд╕рд░реА рдмрд╛рдд, рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдРрд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдЗрд╕реЗ рдЦреБрдж рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрддреА рд╣реИ, рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд┐рд╕рдореЗрдВ рдЧреЛрд▓рд╛рдИред рд╡реИрд╕реЗ, рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдЖрдкрдХреЛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдХреЛрдб рдПрдХ рднреЛрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпреВрдВрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╣рд░ рдЬрдЧрд╣ BigInteger рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХрд╛ рдирд╣реАрдВ рд╣реИред
рдмрд┐рдЧрдЗрдВрдЯрд░ рд╕реНрд░реЛрдд
public static BigInteger BigAr(uint[] numbers) { BigInteger numbersSum = 0; foreach (var number in numbers) numbersSum += number; BigInteger nominator = Factorial(numbersSum); BigInteger denominator = 1; foreach (var number in numbers) denominator *= Factorial(new BigInteger(number)); return nominator / denominator; } public static BigInteger Factorial(BigInteger n) { BigInteger result = 1; for (ulong i = 1; i <= n; i++) result = result * i; return result; } 



рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рдзрд┐


рдЗрд╕рдореЗрдВ Microsoft Excel, wolframalpha.com рдпрд╛ рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ / рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рд╕реЗ рд╕рднреА рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЧрдгрдирд╛ рдЧреБрдгрд╛рдВрдХ рджрд░реНрдЬ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдиреБрдХрд╕рд╛рди рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ: рдЙрдЪреНрдЪ рд╕реНрдореГрддрд┐ рдЦрдкрдд, рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдВрднрд╡ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди, рд╢реАрд░реНрд╖ рдкрд░ рд╣реИред рдПрдХ рддрд░реАрдХрд╛ рдпрд╛ рджреВрд╕рд░рд╛, рдореИрдВрдиреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ


рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рдореНрди рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдИ рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ рдХреЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдмрд╣реБрдкрдж рдЧреБрдгрд╛рдВрдХ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:



рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ, рдЕрдВрддрд┐рдо рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп рдлрд┐рд░ рд╕реЗ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ рдХреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



рд╕реА # рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рджреНрд╡рд┐рдкрдж рд╕реНрд░реЛрдд
 public static ulong BinomAr(uint[] numbers) { if (numbers.Length == 1) return 1; ulong result = 1; uint sum = numbers[0]; for (int i = 1; i < numbers.Length; i++) { sum += numbers[i]; result *= Binominal(sum, numbers[i]); } return result; } public static ulong Binominal(ulong n, ulong k) { ulong r = 1; ulong d; if (k > n) return 0; for (d = 1; d <= k; d++) { r *= n--; r /= d; } return r; } 



рд▓рдШреБрдЧрдгрдХ


рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдореВрд▓ рд╕реВрддреНрд░ рдХреЛ рдореВрд▓ рд░рд╛рд╢рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдФрд░ рдЕрдВрддрд░ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:



рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд░рд┐рдгрд╛рдореА рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП рдИ рдХреЛ рдЙрдард╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред рдПрдХ рдЫреЛрдЯрд╛ рдЕрдиреБрдХреВрд▓рди рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдВрд╢ рдФрд░ рд╣рд░ рд╕реЗ рд╣рд░ рдХреЗ рдЕрдзрд┐рдХрддрдо рднрд╛рдЬреНрдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдерд╛ред рдмрд╛рдж рдХреА рдЧрдгрдирд╛ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рд▓реЙрдЧрд░рд┐рджрдо рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдХреИрд╢реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рд▓реЙрдЧ рд╕реНрд░реЛрдд
 static List<double> Logarithms = new List<double>(); public static ulong Log(params uint[] numbers) { return LogAr(numbers); } public static ulong LogAr(uint[] numbers) { int maxNumber = (int)numbers.Max(); uint numbersSum = 0; foreach (var number in numbers) numbersSum += number; double sum = 0; for (int i = 2; i <= numbersSum; i++) { if (i <= maxNumber) { if (i - 2 >= Logarithms.Count) { var log = Math.Log(i); Logarithms.Add(log); } } else { if (i - 2 < Logarithms.Count) sum += Logarithms[i - 2]; else { var log = Math.Log(i); Logarithms.Add(log); sum += log; } } } var maxNumberFirst = false; foreach (var number in numbers) if (number == maxNumber && !maxNumberFirst) maxNumberFirst = true; else for (int i = 2; i <= number; i++) sum -= Logarithms[i - 2]; return (ulong)Math.Round(Math.Exp(sum)); } 



рдЧреБрдЯреЛрдВ рд╕реЗ рд▓рдШреБрдЧрдгрдХ


рдпрд╣ рд╡рд┐рдзрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рд▓рдЧрднрдЧ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд▓рдШреБрдЧрдгрдХ рдХреЗ рдпреЛрдЧ рдореЗрдВ рддрдереНрдпрд╛рддреНрдордХ рд▓рдШреБрдЧрдгрдХ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЧрд╛рдорд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓рдШреБрдЧрдгрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрд▓реНрдЬреАрдм рдХреЗ рд╕рд╛рде рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдиреНрдп, рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрде.рдиреЗрдЯ рдореЗрдВ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдПрд▓реНрдЧреАрдм тАЛтАЛрдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдпрдВ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рд╣реИред
рд▓реЛрдЧрдЧрд╛рдорд╛ рд╕реНрд░реЛрдд
 static Dictionary<uint, double> LnFacts = new Dictionary<uint, double>(); public static ulong LogGammaAr(uint[] numbers) { int maxNumber = (int)numbers.Max(); double value; double denom = 0; uint numbersSum = 0; foreach (var number in numbers) { numbersSum += number; if (LnFacts.TryGetValue(number, out value)) denom += value; else { value = LnGamma(number + 1); LnFacts.Add(number, value); denom += value; } } double numer; if (LnFacts.TryGetValue(numbersSum, out value)) numer = value; else { value = LnGamma(numbersSum + 1); LnFacts.Add(numbersSum, value); numer = value; } return (ulong)Math.Round(Math.Exp(numer - denom)); } public static double LnGamma(double x) { double sign = 1; return LnGamma(x, ref sign); } public static double LnGamma(double x, ref double sgngam) { double result = 0; double a = 0; double b = 0; double c = 0; double p = 0; double q = 0; double u = 0; double w = 0; double z = 0; int i = 0; double logpi = 0; double ls2pi = 0; double tmp = 0; sgngam = 0; sgngam = 1; logpi = 1.14472988584940017414; ls2pi = 0.91893853320467274178; if ((double)(x) < (double)(-34.0)) { q = -x; w = LnGamma(q, ref tmp); p = (int)Math.Floor(q); i = (int)Math.Round(p); if (i % 2 == 0) { sgngam = -1; } else { sgngam = 1; } z = q - p; if ((double)(z) > (double)(0.5)) { p = p + 1; z = p - q; } z = q * Math.Sin(Math.PI * z); result = logpi - Math.Log(z) - w; return result; } if ((double)(x) < (double)(13)) { z = 1; p = 0; u = x; while ((double)(u) >= (double)(3)) { p = p - 1; u = x + p; z = z * u; } while ((double)(u) < (double)(2)) { z = z / u; p = p + 1; u = x + p; } if ((double)(z) < (double)(0)) { sgngam = -1; z = -z; } else { sgngam = 1; } if ((double)(u) == (double)(2)) { result = Math.Log(z); return result; } p = p - 2; x = x + p; b = -1378.25152569120859100; b = -38801.6315134637840924 + x * b; b = -331612.992738871184744 + x * b; b = -1162370.97492762307383 + x * b; b = -1721737.00820839662146 + x * b; b = -853555.664245765465627 + x * b; c = 1; c = -351.815701436523470549 + x * c; c = -17064.2106651881159223 + x * c; c = -220528.590553854454839 + x * c; c = -1139334.44367982507207 + x * c; c = -2532523.07177582951285 + x * c; c = -2018891.41433532773231 + x * c; p = x * b / c; result = Math.Log(z) + p; return result; } q = (x - 0.5) * Math.Log(x) - x + ls2pi; if ((double)(x) > (double)(100000000)) { result = q; return result; } p = 1 / (x * x); if ((double)(x) >= (double)(1000.0)) { q = q + ((7.9365079365079365079365 * 0.0001 * p - 2.7777777777777777777778 * 0.001) * p + 0.0833333333333333333333) / x; } else { a = 8.11614167470508450300 * 0.0001; a = -(5.95061904284301438324 * 0.0001) + p * a; a = 7.93650340457716943945 * 0.0001 + p * a; a = -(2.77777777730099687205 * 0.001) + p * a; a = 8.33333333333331927722 * 0.01 + p * a; q = q + a / x; } result = q; return result; } 



рдореЗрд░реА рд╡рд┐рдзрд┐


рдореЗрд░реА рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ:

рдореЗрд░реА рд╡рд┐рдзрд┐ рд╕реНрд░реЛрдд
 public static ulong MyAr(uint[] numbers) { uint numbersSum = 0; foreach (var number in numbers) numbersSum += number; uint maxNumber = numbers.Max(); var denomFactorPowers = new uint[maxNumber + 1]; foreach (var number in numbers) for (int i = 2; i <= number; i++) denomFactorPowers[i]++; for (int i = 2; i < denomFactorPowers.Length; i++) denomFactorPowers[i]--; // reduce with nominator; uint currentFactor = 2; uint currentPower = 1; double result = 1; for (uint i = maxNumber + 1; i <= numbersSum; i++) { uint tempDenom = 1; while (tempDenom < result && currentFactor < denomFactorPowers.Length) { if (currentPower > denomFactorPowers[currentFactor]) { currentFactor++; currentPower = 1; } else { tempDenom *= currentFactor; currentPower++; } } result = result / tempDenom * i; } return (ulong)Math.Round(result); } 



рдкрд░реАрдХреНрд╖рдг


рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реБрдЖ: рдпрд╣ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдФрд░ рдЧреЛрд▓рд╛рдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЧрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ


рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдПрдХ рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЧреБрдгрд╛рдВрдХ рдПрдХ рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡ рдСрдкрд░реЗрд╢рди рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЙрджрд╛ред рдПрдоред (рдП, рдмреА, рд╕реА) = рдПрдо (рдП, рд╕реА, рдмреА) = рдПрдо (рд╕реА, рдмреА, рдП), рдЖрджрд┐ред рдЗрд╕рд▓рд┐рдП, рджреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреНрдп рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рджреЛ рд░реЗрдЦрд╛рдВрдХрди рдПрдХ рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрднрд╛рд╡рд┐рдд рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред

рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ 2 рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдБрдЧрд╛:

 Arg count: 2 Naive(1,19) = 20; #18; overflow Binom(1,61) = 62; #60; overflow LogGamma(5,623) = 801096582000; #4612; rounding(error = 1) Log(6,588) = 59481941558292; #5572; rounding(error = 1) My(7,503) = 1708447057008120; #6481; rounding(error = 1) Big(8,959) = 18419736117819661560; #7930 


рдпрд╣ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрддрдо ulong рдорд╛рди 59481941558292 рд╣реИред рдпрд╣ рддрд░реНрдХ 6 рдФрд░ 588 рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереА, рдЬреЛ рдХрд┐ рдХреНрд░рдордмрджреНрдз 6481 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдХреНрд░рдо рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЧреНрд░реАрди рдЧреНрд░рд╛рдл рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдЧреЛрд▓рд╛рдИ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЕрдЧрд▓рд╛ рдХреНрд░рдорд╛рдВрдХрди рд▓реЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред (рем.рел method реп), рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рез. рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрд░рд╛рд╖реНрдЯреНрд░реАрдп рдЧреБрдгрд╛рдВрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧреА рдФрд░ рд╢рдмреНрдж рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдЕрдЧрд▓реЗ рдХреНрд░рдорд╛рдВрдХ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рдмрд┐рдиреЛрдо рдХреЗ рд▓рд┐рдП (рез.ремрей) рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХрд╣реАрдВ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛) ред

рдЪреВрдВрдХрд┐ рдкрд╣рд▓реА рдФрд░ рдЕрдВрддрд┐рдо рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ (2-10 рдФрд░ 11-20 рдХреЗ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде)ред рдЗрдХреНрдХреАрд╕ рдпрд╛ рдЕрдзрд┐рдХ рддрд░реНрдХреЛрдВ рдкрд░, рд╕рднреА рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдкрд░ рднреА рдПрдХ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ (рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдорд▓реНрдЯреАрдореЛрдирд┐рдпрд▓ (1,1, ..., 1) = 21! рдФрд░ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрдо рдЙрдЫрд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдореЗрдВ рдФрд░ рд╡реГрджреНрдзрд┐ред рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдмрдврд╝рд╛рдПрдЧрд╛ред рдореИрдВ рдЗрд╕ рдХрдерди рдХреЛ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдг рдХреЗ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛)ред

рдирд╛рд░рдВрдЧреА рдЧреНрд░рд╛рдл рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдо рддреМрд░ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдореИрдХреНрд╕рд┐рдордо рдЙрд▓реЙрдиреНрдЧ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╣реБрдкрджреАрдп рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╛рдиреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдПрдХ рдФрд░ рд╡реГрджреНрдзрд┐ рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдгрд╛рдо рдЙрд▓реНрдЯреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛ ред рдЗрд╕ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдмрдбрд╝реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреА рдЧрдИ рдереАред





рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рдкрджреНрдзрддрд┐, рдЬреИрд╕рд╛ рдХрд┐ рджреЛрдиреЛрдВ рдЧреНрд░рд╛рдлрд╝реЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ 12 рдФрд░ 13 рддрд░реНрдХреЛрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ рдХреА рдЙрдЪреНрдЪ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡реЗ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ (2 рд╕реЗ 8 рддрдХ) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдореВрд╣ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред 9 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рд╡реЗ рд▓реЙрдЧ рдФрд░ рд▓реЙрдЧрдЧрдореНрдорд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд░реЗрдВрдЬ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ 12 рдФрд░ 13 рдкрд░ рд╡реЗ рдореЗрд░реА рд╡рд┐рдзрд┐ рдХреЛ рднреА рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред 13 рдХреЗ рдмрд╛рдж, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдореЗрд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред

рд▓реЙрдЧ рдФрд░ рд▓реЙрдЧрдЧрдореНрдорд╛ рд╡рд┐рдзрд┐рдпрд╛рдВ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╢реНрд░реЗрдгреА рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рдеред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрдЧ рдЕрднреА рднреА рд▓реЙрдЧрдЧрдореНрдорд╛ рд╕реЗ 1-12 рд╕реЗ рдЖрдЧреЗ рд╣реИ рд╢рд╛рдпрдж рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓реЙрдЧ (рдПрди!) рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ (рд▓реЙрдЧрд░рд┐рдердо) рдХреЗ рдпреЛрдЧ рд╕реЗ рдХрдо рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдзрд┐ рднреА 15-19 рд╕рдВрдЦреНрдпрд╛ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдШреБрдЧрдгрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╕рд╛рдмрд┐рдд рд╣реБрдИред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрдм рдореИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдХреА рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ (рдпрд╛рдиреА, рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдореЗрдп рддреНрд░реБрдЯрд┐) рдмрджрд▓ рдЧрдИ рдереА, рддреЛ рддрд╕реНрд╡реАрд░ рдмрд╣реБрдд рдирд╣реАрдВ рдмрджрд▓реА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ 10 рдФрд░ 100 рдХреА рдореИрдХреНрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЧреНрд░рд╛рдлрд╝ рдирд╣реАрдВ рджрд┐рдПред

рд╡рд┐рдзрд┐ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг


рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреА рдЧрддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкрд╣рд▓рд╛ рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╕рд░рд▓ Naive рд╡рд┐рдзрд┐ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд┐рдЧрдЗрдВрдЯрд░ рдХреЛ рднреА рдирд╣реАрдВ рдЧрд┐рдирд╛ рдЧрдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рдХреЛ 20,000 рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдЧрдгрдирд╛ рд╕рдордп рдорд╛рдкрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░реАрдлреИрдЪ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд▓реЙрдЧ рдФрд░ рд▓реЙрдЧрдЧрдореНрдорд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рд╡реЗ рдкреВрд░реНрд╡- рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓реЙрдЧрд░рд┐рдердо рдФрд░ рдлреИрдХреНрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рд▓реЙрдЧрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рддрд░реНрдХреЛрдВ рдХрд╛ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ

 (1, 1) (1, 2) (2, 1) (2, 2) (5, 5, 5) (10, 10, 10) (5, 10, 15) (6, 6, 6, 6) (5, 6, 7, 8) (2, 3, 4, 5, 7) 




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рддрд░реАрдХрд╛ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3 рдЧреБрдирд╛ рдЦрд░рд╛рдм рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рдиреЛрдо рдиреЗ рдХрд┐рд╕реА рдФрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╕рдм рдХреБрдЫ рдХреА рдЧрдгрдирд╛ рдХреА, рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реИред

LogGamma рдХреА Log рдкрд░ рд╣рд▓реНрдХреА рд╕реА рд▓реАрдб рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд▓рдШреБрдЧрдгрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рддрдереНрдп рдХреЗ рд▓рдШреБрдЧрдгрдХ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Ln (2) + Ln (3) + Ln (4) рдХреЗ рдмрдЬрд╛рдп Ln (4)! рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рднреА рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░реАрдлрд╝реИрдЪ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд▓реЙрдЧ рдФрд░ рд▓реЙрдЧрдЧрдореНрдорд╛ рдХреА рдЧрддрд┐ рдкрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдпрд╛ рдХрд┐ рдЙрдирдХреА рдЧрдгрдирд╛ рдХрд╛ рд╕рдордп рдХреБрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╣реИред рд╢реЗрд╖ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдордпред

рддрд░реНрдХ рдХрд╛ рджреВрд╕рд░рд╛ рдЯреЗрд╕реНрдЯ рд╕реЗрдЯ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд░рд▓рддрдо рдЕрдиреБрднрд╡рд╣реАрди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рднреА рдерд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 (1, 1) (1, 2) (2, 1) (2, 2) (5, 5, 5) (1, 1, 1, 1, 1, 1, 1, 1, 2) (1, 2, 3, 4, 5, 4) 




рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░реА рд╡рд┐рдзрд┐ рдиреЗ рдмрд╛рдХреА рдлрд╝рдВрдХреНрд╢рди ( рдмрд┐рдЧ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдпрд╛, рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдореЗрд░реА рд╡рд┐рдзрд┐ рд╕реЗ рднреА 4 рдЧреБрдирд╛ рдЦрд░рд╛рдм рд╣реЛ рдЧрдИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .NET рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред System.Numerics рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдбрд┐рдХреЙрдиреНрдлрд╝рд┐рд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╣реБрдП ILSpy рдХреЗ рд╕рд╛рде рдореЗрд░реА рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реБрдИ (рдХреЛрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рднреА, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):
.NET рдореЗрдВ BigInteger рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВ
 public static BigInteger operator +(BigInteger left, BigInteger right) { if (right.IsZero) { return left; } if (left.IsZero) { return right; } int num = 1; int num2 = 1; BigIntegerBuilder bigIntegerBuilder = new BigIntegerBuilder(left, ref num); BigIntegerBuilder bigIntegerBuilder2 = new BigIntegerBuilder(right, ref num2); if (num == num2) { bigIntegerBuilder.Add(ref bigIntegerBuilder2); } else { bigIntegerBuilder.Sub(ref num, ref bigIntegerBuilder2); } return bigIntegerBuilder.GetInteger(num); } ... public void Add(ref BigIntegerBuilder reg) { if (reg._iuLast == 0) { this.Add(reg._uSmall); return; } if (this._iuLast != 0) { this.EnsureWritable(Math.Max(this._iuLast, reg._iuLast) + 1, 1); int num = reg._iuLast + 1; if (this._iuLast < reg._iuLast) { num = this._iuLast + 1; Array.Copy(reg._rgu, this._iuLast + 1, this._rgu, this._iuLast + 1, reg._iuLast - this._iuLast); this._iuLast = reg._iuLast; } uint num2 = 0u; for (int i = 0; i < num; i++) { num2 = BigIntegerBuilder.AddCarry(ref this._rgu[i], reg._rgu[i], num2); } if (num2 != 0u) { this.ApplyCarry(num); } return; } uint uSmall = this._uSmall; if (uSmall == 0u) { this = new BigIntegerBuilder(ref reg); return; } this.Load(ref reg, 1); this.Add(uSmall); } 



рдирд┐рд╖реНрдХрд░реНрд╖


рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реА рдкрджреНрдзрддрд┐ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЧрдгрдиреАрдп рд╕рдВрдЦреНрдпрд╛ (рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЖрджрд░реНрд╢ рдПрдХ рд╕реЗ рднреА рдмрджрддрд░) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрджрддрд░ рд╣реИ (рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ .NET рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ)ред рд╣рдо рдпрд╣ рднреА рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди .NET рдореЗрдВ рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рджреНрд╡рд┐рдкрдж рдЧреБрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдмрд╕реЗ рддреЗрдЬрд╝, рдФрд░ рднреА рддреЗрдЬрд╝ рд╣реЛ рдЧрдИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рд╡рд┐рдзрд┐ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рдеред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓рдШреБрдЧрдгрдХреЛрдВ рдХреЗ рд▓рдШреБрдЧрдгрдХреЛрдВ рдФрд░ рд▓рдШреБрдЧрдгрдХреЛрдВ рдХреЗ рдкрд░рд┐рдХрд▓рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╛рдо рди рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпреВрдирд┐рдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреАрдердм рдкрд░ рдЯреЗрд╕реНрдЯ рдФрд░ рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ: рдорд▓реНрдЯреАрдорд┐рдиреЛрдирд▓-рдЧреБрдгрд╛рдВрдХ ред

рдЕрджреНрдпрддрди

Source: https://habr.com/ru/post/In153255/


All Articles