public override IEnumerable <object> Solve(TextReader inputStream) { Modular.InitializeCombinationTable(); var n = inputStream.ReadInt(); var k = inputStream.ReadInt(); yield return(Modular.CombinationWithRepetition(n, k).Value); }
public override IEnumerable <object> Solve(TextReader inputStream) { var(children, candies) = inputStream.ReadValue <int, int>(); Modular.InitializeCombinationTable(); if (children > candies) { yield return(Modular.CombinationWithRepetition(children, candies)); } else { var less = candies / children; var moreChildren = candies - less * children; yield return(Modular.Combination(children, moreChildren)); } }
public override IEnumerable <object> Solve(TextReader inputStream) { var k = inputStream.ReadInt(); var s = inputStream.ReadLine(); var sum = Modular.Zero; Modular.InitializeCombinationTable(2500000); for (int taken = 0; taken <= k; taken++) { sum += Modular.CombinationWithRepetition(taken + 1, s.Length - 1) * Modular.Pow(25, taken) * Modular.Pow(26, k - taken); } yield return(sum.Value); }
public override IEnumerable <object> Solve(TextReader inputStream) { var nk = inputStream.ReadIntArray(); var n = nk[0]; var k = nk[1]; Modular total = new Modular(0); var maxMoveCount = Math.Min(n - 1, k); for (int i = 0; i <= maxMoveCount; i++) { total += Modular.Combination(n, i) * Modular.CombinationWithRepetition(n - i, i); } yield return(total.Value); }
public override IEnumerable <object> Solve(TextReader inputStream) { Modular.InitializeCombinationTable(); var s = inputStream.ReadInt(); var result = Modular.Zero; for (int l = 1; l <= s / 3; l++) { var remain = s - l * 3; if (remain >= 0) { result += Modular.CombinationWithRepetition(l, remain); } } yield return(result); }
public override IEnumerable <object> Solve(TextReader inputStream) { var nm = inputStream.ReadIntArray(); var length = nm[0]; var m = nm[1]; var primeFactors = PrimeFactorize(m).GroupBy(p => p); var count = new Modular(1); foreach (var group in primeFactors) { count *= Modular.CombinationWithRepetition(length, group.Count()); } yield return(count.Value); }
public override IEnumerable <object> Solve(TextReader inputStream) { var nk = inputStream.ReadIntArray(); var totalBalls = nk[0]; var blueBalls = nk[1]; var redBalls = totalBalls - blueBalls; for (int blueGroup = 1; blueGroup <= blueBalls; blueGroup++) { if (blueGroup <= redBalls + 1) { var combination = blueBalls != 1 ? Modular.CombinationWithRepetition(blueGroup, blueBalls - blueGroup) : new Modular(1); combination *= Modular.CombinationWithRepetition(blueGroup + 1, redBalls - (blueGroup - 1)); yield return(combination.Value); } else { yield return(0); } } }
public override IEnumerable <object> Solve(TextReader inputStream) { Modular.InitializeCombinationTable(); var(n, m) = inputStream.ReadValue <int, int>(); var primes = PrimeFactorize(Math.Abs(n)).GroupBy(i => i).Select(g => (g.Key, g.Count())); var count = Modular.One; foreach (var(_, c) in primes) { count *= Modular.CombinationWithRepetition(m, c); } var minusCombination = Modular.Zero; for (int i = (-Math.Sign(n) + 1) / 2; i <= m; i += 2) { minusCombination += Modular.Combination(m, i); } count *= minusCombination; yield return(count.Value); }