ログインしてください。
提出 #31413806
ソースコード 拡げる
#include <vector>
#include <algorithm>
#include <cassert>
#include <iostream>
namespace nachia{
namespace prime_sieve_explicit_internal{
std::vector<bool> isprime = { false }; // a[x] := isprime(2x+1)
void CalcIsPrime(int z){
if((int)isprime.size() *2+1 < z+1){
int new_z = isprime.size();
while(new_z*2+1 < z+1) new_z *= 2;
z = new_z-1;
isprime.resize(z+1, true);
for(int i=1; i*(i+1)*2<=z; i++) if(isprime[i]){
for(int j=i*(i+1)*2; j<=z; j+=i*2+1) isprime[j] = false;
}
}
}
}
bool IsprimeExplicit(int n){
using namespace prime_sieve_explicit_internal;
if(n == 2) return true;
if(n % 2 == 0) return false;
CalcIsPrime(n);
return isprime[(n-1)/2];
}
}
#include <string>
using namespace std;
using i32 = int32_t;
using u32 = uint32_t;
using i64 = int64_t;
using u64 = uint64_t;
#define rep(i,n) for(int i=0; i<(int)(n); i++)
vector<int> spf;
struct spf_init{
spf_init(){
int Z = 1000000;
spf.resize(Z+1);
for(int p=Z; p>=2; p--) if(nachia::IsprimeExplicit(p)) {
for(int q=p; q<=Z; q+=p) spf[q] = p;
}
}
} spf_init_inst;
vector<pair<int,int>> factorize(int a){
vector<pair<int,int>> res;
while(a != 1){
int p = spf[a];
int c = 0;
while(spf[a] == p){
a /= p;
c++;
}
res.push_back(make_pair(p,c));
}
return res;
}
#include <atcoder/modint>
using m32 = atcoder::modint998244353;
int main(){
int N; cin >> N;
vector<int> A(N); rep(i,N) cin >> A[i];
const int Z = 1000000;
vector<vector<int>> PC(Z+1);
for(int a : A) for(auto [p,e] : factorize(a)){
if((int)PC[p].size() < e) PC[p].resize(e);
rep(ee,e) PC[p][ee]++;
}
m32 all_lcm = 1;
rep(z,Z+1) all_lcm *= m32(z).pow(PC[z].size());
vector<m32> Inv(Z+1);
Inv[1] = 1;
for(int i=2; i<=Z; i++) Inv[i] = -(Inv[m32::mod() % i] * (m32::mod() / i));
int Q; cin >> Q;
rep(i,Q){
int K; cin >> K;
vector<int> I(K);
m32 ans = all_lcm;
rep(k,K){ cin >> I[k]; I[k]--; }
for(auto i : I) for(auto [p,e] : factorize(A[i])){
rep(ee,e) if(0 == --PC[p][ee]) ans *= Inv[p];
}
for(auto i : I) for(auto [p,e] : factorize(A[i])){
rep(ee,e) PC[p][ee]++;
}
cout << ans.val() << '\n';
}
return 0;
}
struct ios_do_not_sync{
ios_do_not_sync(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
}
} ios_do_not_sync_instance;
提出情報
| 提出日時 | |
|---|---|
| 問題 | J - Excluded LCM |
| ユーザ | Nachia |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 500 |
| コード長 | 2744 Byte |
| 結果 | AC |
| 実行時間 | 196 ms |
| メモリ | 37812 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 500 / 500 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example_00.txt, example_01.txt |
| All | example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| example_00.txt | AC | 51 ms | 34552 KiB |
| example_01.txt | AC | 51 ms | 34560 KiB |
| test_00.txt | AC | 186 ms | 36476 KiB |
| test_01.txt | AC | 190 ms | 36140 KiB |
| test_02.txt | AC | 193 ms | 36092 KiB |
| test_03.txt | AC | 160 ms | 35428 KiB |
| test_04.txt | AC | 167 ms | 35360 KiB |
| test_05.txt | AC | 147 ms | 37072 KiB |
| test_06.txt | AC | 141 ms | 37204 KiB |
| test_07.txt | AC | 156 ms | 37188 KiB |
| test_08.txt | AC | 148 ms | 37196 KiB |
| test_09.txt | AC | 135 ms | 37076 KiB |
| test_10.txt | AC | 158 ms | 36344 KiB |
| test_11.txt | AC | 175 ms | 36668 KiB |
| test_12.txt | AC | 166 ms | 36380 KiB |
| test_13.txt | AC | 109 ms | 35548 KiB |
| test_14.txt | AC | 131 ms | 35916 KiB |
| test_15.txt | AC | 149 ms | 37812 KiB |
| test_16.txt | AC | 132 ms | 37660 KiB |
| test_17.txt | AC | 102 ms | 37332 KiB |
| test_18.txt | AC | 123 ms | 37404 KiB |
| test_19.txt | AC | 99 ms | 37404 KiB |
| test_20.txt | AC | 192 ms | 36092 KiB |
| test_21.txt | AC | 182 ms | 36008 KiB |
| test_22.txt | AC | 190 ms | 36076 KiB |
| test_23.txt | AC | 170 ms | 35620 KiB |
| test_24.txt | AC | 117 ms | 34424 KiB |
| test_25.txt | AC | 155 ms | 37152 KiB |
| test_26.txt | AC | 147 ms | 37188 KiB |
| test_27.txt | AC | 145 ms | 37076 KiB |
| test_28.txt | AC | 159 ms | 37208 KiB |
| test_29.txt | AC | 165 ms | 37068 KiB |
| test_30.txt | AC | 196 ms | 36132 KiB |