提出 #73310362
ソースコード 拡げる
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <unordered_map>
using namespace std;
const int MAX_A = 10000000;
const long long MOD = 998244353;
vector<int> spf(MAX_A + 1);
void build_spf() {
for (int i = 1; i <= MAX_A; ++i)
spf[i] = i;
for (int i = 2; i * i <= MAX_A; ++i) {
if (spf[i] == i) {
for (int j = i * i; j <= MAX_A; j += i) {
if (spf[j] == j)
spf[j] = i;
}
}
}
}
vector<pair<int, int>> factorize(int x) {
vector<pair<int, int>> factors;
while (x > 1) {
int p = spf[x];
int cnt = 0;
while (spf[x] == p) {
cnt++;
x /= p;
}
factors.emplace_back(p, cnt);
}
return factors;
}
long long mod_pow(long long base, long long exp, long long mod) {
long long result = 1;
base %= mod;
while (exp > 0) {
if (exp & 1) result = (result * base) % mod;
base = (base * base) % mod;
exp >>= 1;
}
return result;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
build_spf();
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; ++i) {
cin >> A[i];
}
unordered_map<int, int> max_exp, second_max, count_max;
for (int x : A) {
auto fac = factorize(x);
for (auto [p, e] : fac) {
if (e > max_exp[p]) {
second_max[p] = max_exp[p];
max_exp[p] = e;
count_max[p] = 1;
} else if (e == max_exp[p]) {
count_max[p]++;
} else if (e > second_max[p]) {
second_max[p] = e;
}
}
}
long long global_lcm = 1;
for (auto& [p, e] : max_exp) {
global_lcm = (global_lcm * mod_pow(p, e, MOD)) % MOD;
}
vector<long long> ans(N);
for (int k = 0; k < N; ++k) {
long long res = global_lcm;
auto fac = factorize(A[k]);
for (auto [p, e] : fac) {
if (e == max_exp[p] && count_max[p] == 1) {
int new_e = second_max[p];
int diff = e - new_e;
long long divisor = mod_pow(p, diff, MOD);
long long inv_div = mod_pow(divisor, MOD - 2, MOD);
res = (res * inv_div) % MOD;
}
}
ans[k] = res;
}
for (int i = 0; i < N; ++i) {
if (i) cout << " ";
cout << ans[i];
}
cout << "\n";
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Many LCMs |
| ユーザ | stone_shadow |
| 言語 | C++23 (GCC 15.2.0) |
| 得点 | 475 |
| コード長 | 2877 Byte |
| 結果 | AC |
| 実行時間 | 378 ms |
| メモリ | 71792 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 475 / 475 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_01.txt |
| All | 00_sample_01.txt, 01_large_t_01.txt, 01_large_t_02.txt, 01_large_t_03.txt, 02_large_n_01.txt, 02_large_n_02.txt, 02_large_n_03.txt, 03_prime_01.txt, 03_prime_02.txt, 03_prime_03.txt, 03_prime_04.txt, 03_prime_05.txt, 03_prime_06.txt, 04_small_prime_factor_01.txt, 04_small_prime_factor_02.txt, 04_small_prime_factor_03.txt, 04_small_prime_factor_04.txt, 04_small_prime_factor_05.txt, 04_small_prime_factor_06.txt, 05_large_value_01.txt, 05_large_value_02.txt, 05_large_value_03.txt, 05_large_value_04.txt, 05_large_value_05.txt, 05_large_value_06.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_01.txt | AC | 81 ms | 42488 KiB |
| 01_large_t_01.txt | AC | 325 ms | 42492 KiB |
| 01_large_t_02.txt | AC | 322 ms | 42568 KiB |
| 01_large_t_03.txt | AC | 325 ms | 42404 KiB |
| 02_large_n_01.txt | AC | 310 ms | 46760 KiB |
| 02_large_n_02.txt | AC | 294 ms | 47684 KiB |
| 02_large_n_03.txt | AC | 279 ms | 51376 KiB |
| 03_prime_01.txt | AC | 166 ms | 42440 KiB |
| 03_prime_02.txt | AC | 275 ms | 65064 KiB |
| 03_prime_03.txt | AC | 309 ms | 65024 KiB |
| 03_prime_04.txt | AC | 311 ms | 65024 KiB |
| 03_prime_05.txt | AC | 232 ms | 56372 KiB |
| 03_prime_06.txt | AC | 234 ms | 56424 KiB |
| 04_small_prime_factor_01.txt | AC | 340 ms | 42452 KiB |
| 04_small_prime_factor_02.txt | AC | 209 ms | 44872 KiB |
| 04_small_prime_factor_03.txt | AC | 213 ms | 44792 KiB |
| 04_small_prime_factor_04.txt | AC | 217 ms | 44876 KiB |
| 04_small_prime_factor_05.txt | AC | 283 ms | 43604 KiB |
| 04_small_prime_factor_06.txt | AC | 282 ms | 43600 KiB |
| 05_large_value_01.txt | AC | 262 ms | 42492 KiB |
| 05_large_value_02.txt | AC | 156 ms | 42500 KiB |
| 05_large_value_03.txt | AC | 251 ms | 54316 KiB |
| 05_large_value_04.txt | AC | 378 ms | 71792 KiB |
| 05_large_value_05.txt | AC | 257 ms | 49836 KiB |
| 05_large_value_06.txt | AC | 234 ms | 56960 KiB |