結果
問題 | No.864 四方演算 |
ユーザー |
![]() |
提出日時 | 2020-07-13 18:53:14 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 37 ms / 1,000 ms |
コード長 | 2,349 bytes |
コンパイル時間 | 4,001 ms |
コンパイル使用メモリ | 109,316 KB |
実行使用メモリ | 17,792 KB |
最終ジャッジ日時 | 2024-11-07 23:04:00 |
合計ジャッジ時間 | 4,915 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using CompLib.Util;public class Program{public void Solve(){var sc = new Scanner();long n = sc.NextLong();long k = sc.NextLong();long ans = 0;for (long ac = 1; ac * ac <= k; ac++){if (k % ac != 0) continue;long bd = k / ac;// ac,bdを[1,N]の2数の和にする// Console.WriteLine($"{ac} {C(ac, n)} {bd} {C(bd, n)}");ans += C(ac, n) * C(bd, n) * (ac == bd ? 1 : 2);}Console.WriteLine(ans);}long C(long sum, long n){if (sum > 2 * n) return 0;if (sum <= n + 1) return sum - 1;return 2 * n - sum + 1;}public static void Main(string[] args) => new Program().Solve();}namespace CompLib.Util{using System;using System.Linq;class Scanner{private string[] _line;private int _index;private const char Separator = ' ';public Scanner(){_line = new string[0];_index = 0;}public string Next(){if (_index >= _line.Length){string s;do{s = Console.ReadLine();} while (s.Length == 0);_line = s.Split(Separator);_index = 0;}return _line[_index++];}public int NextInt() => int.Parse(Next());public long NextLong() => long.Parse(Next());public double NextDouble() => double.Parse(Next());public decimal NextDecimal() => decimal.Parse(Next());public char NextChar() => Next()[0];public char[] NextCharArray() => Next().ToCharArray();public string[] Array(){string s = Console.ReadLine();_line = s.Length == 0 ? new string[0] : s.Split(Separator);_index = _line.Length;return _line;}public int[] IntArray() => Array().Select(int.Parse).ToArray();public long[] LongArray() => Array().Select(long.Parse).ToArray();public double[] DoubleArray() => Array().Select(double.Parse).ToArray();public decimal[] DecimalArray() => Array().Select(decimal.Parse).ToArray();}}