public override IEnumerable <object> Solve(TextReader inputStream) { var nm = inputStream.ReadIntArray(); var n = nm[0]; var m = nm[1]; var a = inputStream.ReadIntArray(); var halfA = a.Select(i => i / 2).ToArray(); var lcm = new BigInteger(1); // ゴリ押し var evenCount = f(halfA[0]); if (halfA.All(i => f(i) == evenCount)) { halfA = halfA.Select(i => i / (1 << evenCount)).ToArray(); foreach (var halfAi in halfA) { lcm = BasicAlgorithms.Lcm(lcm, halfAi); } var count = (m / (lcm << evenCount) + 1) / 2; yield return(count); } else { yield return(0); } }
public override IEnumerable <object> Solve(TextReader inputStream) { var n = inputStream.ReadInt(); var permutation = Enumerable.Range(1, n).ToArray(); var p = inputStream.ReadIntArray(); var q = inputStream.ReadIntArray(); var a = 0; var b = 0; var count = 0; foreach (var perm in BasicAlgorithms.GetPermutations(permutation, true)) { if (perm.SequenceEqual(p)) { a = count; } if (perm.SequenceEqual(q)) { b = count; } count++; } yield return(Math.Abs(a - b)); }
public _basicAlgorithmsUnitTests() { _basicAlgorithms = new BasicAlgorithms(); }
public BasicAlgorithmsController(BasicAlgorithms basicAlgorithms) { _basicAlgorithms = basicAlgorithms; }