結果
問題 | No.990 N×Mマス計算(Kの倍数) |
ユーザー |
![]() |
提出日時 | 2023-07-15 05:03:45 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,681 bytes |
コンパイル時間 | 2,291 ms |
コンパイル使用メモリ | 165,508 KB |
実行使用メモリ | 13,348 KB |
最終ジャッジ日時 | 2024-09-16 13:32:37 |
合計ジャッジ時間 | 5,117 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 17 WA * 2 |
ソースコード
#include <iostream>#include <vector>#include <unordered_map>#include <cmath>#include <bits/stdc++.h>using namespace std;vector<int> Divisors(int N) {vector<int> divisors;for (int i = 1; i <= N; i++) {if (i * i >= N) {break;} else if (N % i == 0) {divisors.push_back(i);}}int i = sqrt(N);if (i * i == N) {divisors.push_back(i);for (int j = divisors.size() - 1; j >= 0; j--) {divisors.push_back(N / divisors[j]);}} else {for (int j = divisors.size() - 1; j >= 0; j--) {divisors.push_back(N / divisors[j]);}}return divisors;}int main() {ios_base::sync_with_stdio(false);cin.tie(NULL);int N, M, K;cin >> N >> M >> K;string op;cin >> op;vector<int> B(M);for (int m = 0; m < M; m++) {cin >> B[m];}vector<int> A(N);for (int n = 0; n < N; n++) {cin >> A[n];}long long ans;if (op == "+") {unordered_map<int, int> cnt;for (int b : B) {cnt[b % K]++;}ans = 0;for (int a : A) {ans += cnt[((-a) % K+K)%K];}cout << ans << endl;} else {unordered_map<int, int> cnt;vector<int> D = Divisors(K);for (int b : B) {for (int d : D) {if (b % d == 0) {cnt[d]++;}}}ans = 0;for (int a : A) {int g = __gcd(a, K);ans += cnt[K / g];}cout << ans << endl;}return 0;}