Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }