コード例 #1
0
        public int FirstAnswer()
        {
            var ord = Buslines
                      .OrderBy(x => TimeToNext(x));

            return(ord.First() * TimeToNext(ord.First()));
        }
コード例 #2
0
        public bool IsAnswer(long t)
        {
            bool answer = Buslines
                          .Zip(Diffs, (a, b) => (t + b) % a)
                          .All(x => x == 0);

            return(answer);
        }
コード例 #3
0
        public long SecondAnswer()
        {
            long seed = 0;
            long step = Buslines.First();
            int  i    = 1;

            while (!IsAnswer(seed))
            {
                seed += step;
                if (seed % Buslines.First() == 0 && (seed + Diffs[i]) % Buslines.ElementAt(i) == 0)
                {
                    step = Buslines[0..(i + 1)].Select(x => Convert.ToInt64(x)).Aggregate((a, b) => a * b);