Exemple #1
0
        public override IEnumerable <object> Solve(TextReader inputStream)
        {
            var n = inputStream.ReadInt();
            var a = inputStream.ReadIntArray();

            Modular lcm = new Modular(1);

            for (int i = 1; i < a.Length; i++)
            {
                lcm = new Modular(Lcm(lcm.Value, a[i]));
            }

            var sum = new Modular(0);

            foreach (var v in a)
            {
                sum += lcm / new Modular(v);
            }

            yield return(sum.Value);
        }
Exemple #2
0
        public override IEnumerable <object> Solve(TextReader inputStream)
        {
            var n = inputStream.ReadInt();
            var a = inputStream.ReadIntArray();

            var primes = new Dictionary <int, int>();

            foreach (var ai in a)
            {
                foreach (var prime in PrimeFactorization(ai))   // 素数, 個数のペア
                {
                    if (primes.ContainsKey(prime.Key))
                    {
                        primes[prime.Key] = Math.Max(primes[prime.Key], prime.Value);
                    }
                    else
                    {
                        primes[prime.Key] = prime.Value;
                    }
                }
            }

            Modular lcm = new Modular(1);

            foreach (var prime in primes)
            {
                lcm *= Modular.Pow(new Modular(prime.Key), prime.Value);
            }

            var sum = new Modular(0);

            foreach (var v in a)
            {
                sum += lcm / new Modular(v);
            }

            yield return(sum.Value);
        }