結果
問題 |
No.990 N×Mマス計算(Kの倍数)
|
ユーザー |
![]() |
提出日時 | 2020-02-19 23:40:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,083 bytes |
コンパイル時間 | 1,020 ms |
コンパイル使用メモリ | 90,152 KB |
最終ジャッジ日時 | 2025-01-09 01:07:08 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 18 RE * 1 |
ソースコード
#include <iostream> #include <algorithm> #include <vector> #include <map> #include <numeric> using namespace std; using ll = long long; using vi = vector<int>; #define rep(i,n) for(int i=0;i<(n);++i) #define all(f,c,...) (([&](decltype((c)) cccc) { return (f)(begin(cccc), end(cccc), ## __VA_ARGS__); })(c)) int main() { int N, M, K; cin >> N >> M >> K; char op; cin >> op; vi B(M); rep(i, M) cin >> B[i]; if (op == '+') { vi m(K, 0); rep(i, M) ++m[B[i] % K]; ll ans = 0; rep(i, N) { int A; cin >> A; ans += m[(K - A % K) % K]; } cout << ans << endl; } else { vi div; for (ll i = 1; i * i <= K; ++i) { if (K % i == 0) { div.push_back(i); if (i * i != K) div.push_back(K / i); } } map<int, int> m; rep(i, M) { ++m[gcd(B[i], K)]; } all(sort, div); ll ans = 0; rep(i, N) { int A; cin >> A; for (const auto& e : div) { if (A % e == 0) { ans += m[K / e]; } } } cout << ans << endl; } return 0; }