結果
| 問題 |
No.1529 Constant Lcm
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-06-04 21:45:33 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2,189 ms / 3,000 ms |
| コード長 | 1,300 bytes |
| コンパイル時間 | 1,900 ms |
| コンパイル使用メモリ | 184,956 KB |
| 実行使用メモリ | 14,804 KB |
| 最終ジャッジ日時 | 2024-11-19 13:36:13 |
| 合計ジャッジ時間 | 25,007 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 24 |
コンパイルメッセージ
main.cpp: In function 'void ertstns()':
main.cpp:16:26: warning: iteration 1000005 invokes undefined behavior [-Waggressive-loop-optimizations]
16 | if(prime_fuctor[i] == -1){
| ~~~~~~~~~~~~~~^
main.cpp:15:23: note: within this loop
15 | for(int i = 2 ; i <= MAX_N ; i++){
| ~~^~~~~~~~
ソースコード
#include <bits/stdc++.h>
using namespace std ;
typedef long long ll ;
#define rep(i,n) for(int i = 0 ; i < n ; i++)
#define rrep(i,a,b) for(int i = a ; i < b ; i++)
const int MAX_N = 1000007 ;
const int mod = 998244353 ;
int n ;
int prime_fuctor[MAX_N] ;
void ertstns(){
memset(prime_fuctor,-1,sizeof(prime_fuctor)) ;
for(int i = 2 ; i <= MAX_N ; i++){
if(prime_fuctor[i] == -1){
for(int j = i ; j <= MAX_N ; j += i){
prime_fuctor[j] = i ;
}
}
}
}
set<ll> tmp ;
map<int,int> rem ;
int main(){
ertstns() ;
cin >> n ;
for(int i = 1 ; i < n ; i++){
map<int,int> cnt ;
set<int> ex ;
int k = i , p = (n - i) ;
while(k != 1){
int m = prime_fuctor[k] ;
tmp.insert(m) ;
k /= m ;
ex.insert(m) ;
cnt[m]++ ;
}
while(p != 1){
int m = prime_fuctor[p] ;
tmp.insert(m) ;
p /= m ;
ex.insert(m) ;
cnt[m]++ ;
}
for(int u : ex){
rem[u] = max(rem[u],cnt[u]) ;
}
}
ll ans = 1 ;
for(ll u : tmp){
while(rem[u] > 0){
(ans *= u) %= mod ;
rem[u]-- ;
}
}
cout << ans << endl ;
}