結果

問題 No.990 N×Mマス計算(Kの倍数)
ユーザー siman
提出日時 2020-02-15 03:53:25
言語 Ruby
(2.7.0p0)
結果
AC  
実行時間 364 ms
コード長 604 Byte
コンパイル時間 244 ms
使用メモリ 27,008 KB
最終ジャッジ日時 2020-02-15 03:53:28

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
1_sample1.txt AC 8 ms
11,420 KB
2_sample2.txt AC 12 ms
11,472 KB
3.txt AC 12 ms
11,420 KB
4.txt AC 12 ms
11,360 KB
5.txt AC 8 ms
11,504 KB
6.txt AC 16 ms
11,432 KB
7.txt AC 12 ms
11,460 KB
8.txt AC 16 ms
11,360 KB
9.txt AC 12 ms
11,348 KB
10.txt AC 8 ms
11,376 KB
11.txt AC 112 ms
20,256 KB
12.txt AC 124 ms
20,912 KB
13.txt AC 352 ms
27,004 KB
14.txt AC 84 ms
17,352 KB
15.txt AC 160 ms
18,976 KB
16.txt AC 96 ms
14,904 KB
17.txt AC 140 ms
19,412 KB
18.txt AC 72 ms
14,636 KB
19.txt AC 364 ms
27,008 KB
20.txt AC 144 ms
19,120 KB
テストケース一括ダウンロード
コンパイルメッセージ
Syntax OK

ソースコード

diff #
N, M, K = gets.split.map(&:to_i)
op, *B = gets.chomp.split
B.map!(&:to_i)
A = N.times.map { gets.to_i }

ans = 0
gcd_counter_a = Hash.new(0)
gcd_counter_b = Hash.new(0)
mod_counter = Hash.new(0)

B.each do |b|
  mod_counter[b % K] += 1
  gcd_counter_b[b.gcd(K)] += 1
end

A.each do |a|
  gcd_counter_a[a.gcd(K)] += 1
end

if op == '+'
  A.each do |a|
    if a % K == 0
      ans += mod_counter[0]
    else
      ans += mod_counter[K - a % K]
    end
  end
else
  gcd_counter_a.each do |a, m|
    gcd_counter_b.each do |b, n|
      next if (a * b) % K != 0

      ans += m * n
    end
  end
end

puts ans
0