提出 #8501110


ソースコード 拡げる

# frozen_string_literal: true


input = gets.chomp.split(' ').map(&:to_i)
X = input[0]
Y = input[1]
modu = 1_000_000_007
modu_list = (modu - 2).to_s(2).split('').map(&:to_i).reverse
# def derive_inverse(num, modu)
#   i = 0
#   res = 1
#   until (res % num).zero?
#     res += modu
#     i += 1
#   end
#   (1 + i * modu) / num
# end
def derive_inverse(num, modu, modu_list = [])
  result = num
  result_list = [num % modu]
  time_time = 1
  while result_list.length < modu_list.length do
    result = result**2 % modu
    time_time *= 2
    result_list << result
  end
  result = 1
  result_list.each_with_index do |e, i|
    result = result * e % modu if modu_list[i] != 0
  end
  result
end

# def derive_inverse(num, modu)
#   return num.pow(modu-2,  modu)
# end

if ((2 * Y - X) % 3).zero? && ((2 * X - Y) % 3).zero? && (2 * Y - X >= 0) && (2 * X - Y >= 0)
  m = (2 * Y - X) / 3
  n = (2 * X - Y) / 3

  answer = 1

  if m < n
    ele = m
    elem = n
  else
    ele = n
    elem = m
  end

  deno = 1
  ele.times do |i|
    deno = deno * (i + 1) % modu
    answer = answer * (elem + 1 + i) % modu
  end
  deno = derive_inverse(deno, modu, modu_list)
  answer = answer * deno % modu
else
  answer = 0
end

puts answer % modu

提出情報

提出日時
問題 D - Knight
ユーザ pigutty
言語 Ruby (2.3.3)
得点 400
コード長 1293 Byte
結果 AC
実行時間 55 ms
メモリ 1916 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 31
セット名 テストケース
Sample sample_01, sample_02, sample_03
All hand_01, hand_02, hand_03, hand_04, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_11, random_12, random_13, random_14, random_15, random_16, random_17, random_18, random_19, random_20, random_21, random_22, random_23, random_24, sample_01, sample_02, sample_03
ケース名 結果 実行時間 メモリ
hand_01 AC 7 ms 1788 KiB
hand_02 AC 7 ms 1788 KiB
hand_03 AC 7 ms 1788 KiB
hand_04 AC 7 ms 1788 KiB
random_01 AC 7 ms 1788 KiB
random_02 AC 7 ms 1788 KiB
random_03 AC 7 ms 1788 KiB
random_04 AC 7 ms 1788 KiB
random_05 AC 7 ms 1788 KiB
random_06 AC 7 ms 1788 KiB
random_07 AC 7 ms 1788 KiB
random_08 AC 7 ms 1788 KiB
random_09 AC 7 ms 1788 KiB
random_10 AC 26 ms 1788 KiB
random_11 AC 7 ms 1788 KiB
random_12 AC 25 ms 1788 KiB
random_13 AC 24 ms 1788 KiB
random_14 AC 19 ms 1788 KiB
random_15 AC 17 ms 1788 KiB
random_16 AC 7 ms 1788 KiB
random_17 AC 50 ms 1788 KiB
random_18 AC 51 ms 1788 KiB
random_19 AC 51 ms 1788 KiB
random_20 AC 55 ms 1788 KiB
random_21 AC 51 ms 1788 KiB
random_22 AC 51 ms 1788 KiB
random_23 AC 50 ms 1788 KiB
random_24 AC 50 ms 1916 KiB
sample_01 AC 7 ms 1788 KiB
sample_02 AC 7 ms 1788 KiB
sample_03 AC 51 ms 1788 KiB