public static void Solve() { var N = Scanner.Scan <int>(); var A = Scanner.ScanEnumerable <int>().ToArray(); var dict = new Dictionary <int, int>(); var(l, r) = (0, 0); for (var i = 0; i < A.Length; i++) { if (dict.ContainsKey(A[i])) { l = dict[A[i]]; r = N - i; break; } else { dict[A[i]] = i; } } for (var k = 1; k <= A.Length; k++) { var nCk = EnumerationModulo.Combination(N + 1, k); var lrCk = EnumerationModulo.Combination(l + r, k - 1); Console.WriteLine(nCk - lrCk); } }
public static void Solve() { var(N, K) = Scanner.Scan <int, int>(); var A = Scanner.ScanEnumerable <int>().Select(x => (ModuloInteger)x).ToArray(); var sum = new ModuloInteger[K + 1]; for (var i = 0; i < N; i++) { ModuloInteger x = 1; for (var j = 0; j <= K; j++) { sum[j] += x; x *= A[i]; } } var i2 = ModuloInteger.Inverse(2); for (var i = 1; i <= K; i++) { ModuloInteger answer = 0; for (var j = 0; j <= i; j++) { answer += EnumerationModulo.Combination(i, j) * (sum[j] * sum[i - j] - sum[i]); } answer *= i2; Console.WriteLine(answer); } }
public static void Solve() { var(N, M) = Scanner.Scan <int, int>(); if (M == 1) { Console.WriteLine(1); return; } mint answer = 1; foreach (var v in Prime.GetFactors(M).Values) { answer *= EnumerationModulo.Combination(v + N - 1, N - 1); } Console.WriteLine(answer); }