提出 #73459694
ソースコード 拡げる
#include <iostream>
#include <vector>
#include <map>
#include <atcoder/modint>
#define rep(i, n) for(i = 0; i < n; i++)
#define int long long
using namespace std;
using namespace atcoder;
using mint = modint998244353;
const int MAX = 10000001;
bool isPrime[MAX];
int minPrime[MAX];
void factorize(int x, vector<int> &ps, vector<int> &es) {
int p = -1, e = 0;
while (x > 1) {
if (minPrime[x] != p) {
if (p != -1) {
ps.push_back(p);
es.push_back(e);
}
p = minPrime[x];
e = 0;
}
e++;
x /= p;
}
ps.push_back(p);
es.push_back(e);
}
vector<mint> solve(vector<int> a) {
int i, j;
int n = a.size();
map<int, vector<int>> mp; //(p, eの上位1,2番目)
rep(i, n) {
vector<int> ps, es;
factorize(a[i], ps, es);
rep(j, ps.size()) {
int p = ps[j], e = es[j];
vector<int> &vec = mp[p];
vec.push_back(e);
for (int k = (int)vec.size() - 2; k >= 0; k--) {
if (vec[k] < vec[k + 1]) swap(vec[k], vec[k + 1]);
}
if (vec.size() == 3) vec.pop_back();
}
}
mint all = 1;
for (map<int, vector<int>>::iterator it = mp.begin(); it != mp.end(); it++) {
int p = it->first, e = it->second[0];
all *= mint(p).pow(e);
}
vector<mint> ret(n);
rep(i, n) {
vector<int> ps, es;
factorize(a[i], ps, es);
ret[i] = all;
rep(j, ps.size()) {
int p = ps[j], e = es[j];
if (mp[p][0] == e) {
int e2;
if (mp[p].size() == 1) e2 = 0;
else e2 = mp[p][1];
ret[i] *= mint(p).pow(mp[p][0] - e2).inv();
}
}
}
return ret;
}
signed main() {
int i, j;
rep(i, MAX) isPrime[i] = true;
for (i = 2; i < MAX; i++) {
if (isPrime[i]) {
minPrime[i] = i;
for (j = 2 * i; j < MAX; j += i) {
isPrime[j] = false;
if (!minPrime[j]) minPrime[j] = i;
}
}
}
int T;
cin >> T;
while (T--) {
int n; cin >> n;
vector<int> a(n);
rep(i, n) cin >> a[i];
vector<mint> ans = solve(a);
rep(i, n) {
cout << ans[i].val();
if (i + 1 < n) cout << " ";
}
cout << endl;
}
return 0;
}
提出情報
提出日時
2026-02-21 14:22:18+0900
問題
E - Many LCMs
ユーザ
startcpp
言語
C++23 (GCC 15.2.0)
得点
475
コード長
2075 Byte
結果
AC
実行時間
549 ms
メモリ
116944 KiB
コンパイルエラー
./Main.cpp: In function 'std::vector<atcoder::static_modint<998244353> > solve(std::vector<long long int>)':
./Main.cpp:5:32: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
5 | #define rep(i, n) for(i = 0; i < n; i++)
| ^
./Main.cpp:41:17: note: in expansion of macro 'rep'
41 | rep(j, ps.size()) {
| ^~~
./Main.cpp:5:32: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
5 | #define rep(i, n) for(i = 0; i < n; i++)
| ^
./Main.cpp:64:17: note: in expansion of macro 'rep'
64 | rep(j, ps.size()) {
| ^~~
ジャッジ結果
セット名
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
204 ms
91532 KiB
01_large_t_01.txt
AC
484 ms
91316 KiB
01_large_t_02.txt
AC
506 ms
91480 KiB
01_large_t_03.txt
AC
507 ms
91500 KiB
02_large_n_01.txt
AC
527 ms
95832 KiB
02_large_n_02.txt
AC
514 ms
96784 KiB
02_large_n_03.txt
AC
501 ms
100608 KiB
03_prime_01.txt
AC
357 ms
91400 KiB
03_prime_02.txt
AC
531 ms
114000 KiB
03_prime_03.txt
AC
526 ms
114068 KiB
03_prime_04.txt
AC
528 ms
113832 KiB
03_prime_05.txt
AC
416 ms
103316 KiB
03_prime_06.txt
AC
413 ms
103444 KiB
04_small_prime_factor_01.txt
AC
549 ms
91400 KiB
04_small_prime_factor_02.txt
AC
381 ms
94872 KiB
04_small_prime_factor_03.txt
AC
381 ms
94876 KiB
04_small_prime_factor_04.txt
AC
378 ms
95092 KiB
04_small_prime_factor_05.txt
AC
465 ms
93136 KiB
04_small_prime_factor_06.txt
AC
461 ms
93120 KiB
05_large_value_01.txt
AC
469 ms
91320 KiB
05_large_value_02.txt
AC
351 ms
91548 KiB
05_large_value_03.txt
AC
509 ms
103944 KiB
05_large_value_04.txt
AC
515 ms
116944 KiB
05_large_value_05.txt
AC
478 ms
98048 KiB
05_large_value_06.txt
AC
409 ms
104044 KiB