提出 #67792244
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for (int i=(int)(a);i<(int)(b);i++)
#include <atcoder/modint>
using mint = atcoder::modint998244353;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// input
int N;
cin >> N;
vector<int> A(N);
rep(i, 0, N) cin >> A[i];
// 約数を列挙する
const int L = 200'200;
vector<vector<int>> table(L);
rep(i, 1, L) {
for (int j = i; j < L; j += i){
table[j].push_back(i);
}
}
// R を求める
vector<mint> R(L), R_inv(L);
{
mint tmp = 1;
rep(i, 1, L){
R[i] = tmp;
tmp *= 10;
tmp += 1;
R_inv[i] = R[i].inv();
}
}
// C[i] = 1 -> A[j] が i の倍数となるような j が存在する
vector<int> C(L);
C[1] = 1;
mint ans = 1;
rep(i, 0, N){
// 以前出たことない時だけ探索
if (C[A[i]] == 0){
int a = A[i];
vector<int> p(table[a].size());
rep(j, 0, table[a].size()) if (C[table[a][j]] == 0) p[j] = 1;
for (int j = (int)table[a].size() - 1; j >= 0; j--){
// 約数包除原理
rep(k, j + 1, table[a].size()){
if (table[a][k] % table[a][j] == 0) p[j] -= p[k];
}
ans *= (p[j] < 0 ? R_inv[table[a][j]].pow(-p[j]) : R[table[a][j]].pow(p[j]));
}
for (auto x : table[a]) C[x] = 1;
}
cout << ans.val() << "\n";
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - Repunits |
| ユーザ | potato167 |
| 言語 | C++ 17 (gcc 12.2) |
| 得点 | 900 |
| コード長 | 1643 Byte |
| 結果 | AC |
| 実行時間 | 228 ms |
| メモリ | 27632 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 900 / 900 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_n_small_00.txt, 01_n_small_01.txt, 01_n_small_02.txt, 01_n_small_03.txt, 01_n_small_04.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 03_hcn_00.txt, 03_hcn_01.txt, 03_hcn_02.txt, 03_hcn_03.txt, 03_hcn_04.txt, 04_max_00.txt, 05_min_00.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00.txt | AC | 82 ms | 26760 KiB |
| 00_sample_01.txt | AC | 81 ms | 26844 KiB |
| 00_sample_02.txt | AC | 82 ms | 26760 KiB |
| 01_n_small_00.txt | AC | 84 ms | 26744 KiB |
| 01_n_small_01.txt | AC | 82 ms | 26828 KiB |
| 01_n_small_02.txt | AC | 81 ms | 26672 KiB |
| 01_n_small_03.txt | AC | 84 ms | 26700 KiB |
| 01_n_small_04.txt | AC | 82 ms | 26764 KiB |
| 02_random_00.txt | AC | 165 ms | 27352 KiB |
| 02_random_01.txt | AC | 184 ms | 27588 KiB |
| 02_random_02.txt | AC | 162 ms | 27328 KiB |
| 02_random_03.txt | AC | 192 ms | 27540 KiB |
| 02_random_04.txt | AC | 195 ms | 27464 KiB |
| 02_random_05.txt | AC | 209 ms | 27532 KiB |
| 02_random_06.txt | AC | 185 ms | 27592 KiB |
| 02_random_07.txt | AC | 187 ms | 27456 KiB |
| 02_random_08.txt | AC | 158 ms | 27296 KiB |
| 02_random_09.txt | AC | 196 ms | 27460 KiB |
| 02_random_10.txt | AC | 194 ms | 27600 KiB |
| 02_random_11.txt | AC | 221 ms | 27632 KiB |
| 02_random_12.txt | AC | 222 ms | 27524 KiB |
| 02_random_13.txt | AC | 222 ms | 27548 KiB |
| 02_random_14.txt | AC | 228 ms | 27560 KiB |
| 03_hcn_00.txt | AC | 117 ms | 27560 KiB |
| 03_hcn_01.txt | AC | 119 ms | 27632 KiB |
| 03_hcn_02.txt | AC | 122 ms | 27544 KiB |
| 03_hcn_03.txt | AC | 123 ms | 27560 KiB |
| 03_hcn_04.txt | AC | 119 ms | 27604 KiB |
| 04_max_00.txt | AC | 101 ms | 27624 KiB |
| 05_min_00.txt | AC | 83 ms | 26844 KiB |