public override IEnumerable <string> Solve(TextReader inputStream) { var(n, q) = inputStream.ReadValue <int, int>(); var a = inputStream.ReadIntArray(); var s = inputStream.ReadIntArray(); var gcds = new long[n]; gcds[0] = a[0]; for (int i = 1; i < a.Length; i++) { gcds[i] = BasicAlgorithm.Gcd(a[i], gcds[i - 1]); } foreach (var si in s) { var index = BoundaryBinarySearch(gcds, (long l) => BasicAlgorithm.Gcd(l, si) == 1, -1, gcds.Length); if (index < gcds.Length) { yield return((index + 1).ToString()); } else { yield return(BasicAlgorithm.Gcd(gcds[^ 1], si).ToString());
public void TestBasicAlgProfit() { using (var provider = new TextCandleProvider()) { provider.SetTextParams("data/si-9-17.dat", ';'); var alg = new BasicAlgorithm(5, 5); var acc = new TestAccAgregator(); while (provider.MoveNext()) { var answer = alg.Check(provider.Current); if (answer == FortsRobotLib.AlgResult.Buy) { acc.Buy(1 - acc.Assets, provider.Current); } if (answer == FortsRobotLib.AlgResult.Sell) { acc.Sell(1 + acc.Assets, provider.Current); } if (answer == FortsRobotLib.AlgResult.Exit) { acc.Close(provider.Current); } } acc.Close(provider.Current); Assert.IsTrue(acc.Balance > 0); } }
public void TestBasicAlgMatrix() { using (var provider = new TextCandleProvider()) { var alg = new BasicAlgorithm(13, 12, 11, 10, 9, 8, 7, 6, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13); provider.SetTextParams("data/si-9-17.dat", ';'); while (provider.MoveNext() && provider.Current.TimeStamp != new DateTime(2017, 6, 1, 15, 0, 0)) { } Assert.IsTrue(provider.Current.Close == 58054); while (provider.MoveNext() && provider.Current.TimeStamp != new DateTime(2017, 6, 8, 11, 0, 0)) { alg.Check(provider.Current); } alg.Check(provider.Current); Assert.IsTrue(provider.Current.Close == 58204); using (var reader = new StreamReader("../../data/basic_data.dat")) { while (provider.MoveNext() && provider.Current.TimeStamp != new DateTime(2017, 6, 10, 0, 0, 0)) { var answer = alg.Check(provider.Current); var data = alg.Data.Last(); var values = reader.ReadLine().Split(';').ToArray(); for (var i = 3; i < 12; i++) { Assert.AreEqual(Math.Truncate((data[i - 2])), Math.Truncate(float.Parse(values[i], NumberStyles.Any, CultureInfo.InvariantCulture))); } Assert.AreEqual(Math.Truncate(float.Parse(values[2], NumberStyles.Any, CultureInfo.InvariantCulture)), Math.Truncate(data[0])); System.Diagnostics.Trace.WriteLine(answer); } } Assert.IsTrue(provider.Current.Close == 58220); } }
public override IEnumerable <object> Solve(TextReader inputStream) { var ab = inputStream.ReadIntArray(); var a = ab[0]; var b = ab[1]; yield return(BasicAlgorithm.Lcm(a, b)); }
int GetCount(string n, int k) { n = n.TrimStart('0'); if (n == string.Empty) { n = "0"; } if (k <= 0) { return(1); } var nInt = BigInteger.Parse(n); if (k == 1 && nInt < 1) { return(0); } if (k == 2 && nInt < 11) { return(0); } else if (k == 3 && nInt < 111) { return(0); } int sum = 0; var digit = n.Length; var maxDigit = n[0] - '0'; // 最上位桁が0 if (digit > k) { sum += (int)BasicAlgorithm.Combination(digit - 1, k) * Pow(9, k); } // 最上位桁が1以上maxDigit未満 sum += (maxDigit - 1) * (int)BasicAlgorithm.Combination(digit - 1, k - 1) * Pow(9, k - 1); // 最上位桁がmaxDigit sum += GetCount(n.Substring(1), k - 1); return(sum); }
public override IEnumerable <object> Solve(TextReader inputStream) { var k = inputStream.ReadInt(); long sum = 0; for (int a = 1; a <= k; a++) { for (int b = 1; b <= k; b++) { for (int c = 1; c <= k; c++) { sum += BasicAlgorithm.Gcd(BasicAlgorithm.Gcd(a, b), c); } } } yield return(sum); }
static void Main() { techVar = new TechnicalVariables { pauseValue = 0, fieldY = 4, fieldX = 4 }; chessField = new char[techVar.fieldY, techVar.fieldX]; CreateChessField(ref chessField); DrawChessField(chessField); var algorithm = new BasicAlgorithm(chessField, techVar); algorithm.StartSearching(); ReadKey(); }