結果

問題 No.3187 Mingle
ユーザー 蜜蜂
提出日時 2025-06-02 18:58:52
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 703 bytes
コンパイル時間 1,107 ms
コンパイル使用メモリ 121,268 KB
実行使用メモリ 40,064 KB
最終ジャッジ日時 2025-06-13 14:37:41
合計ジャッジ時間 12,699 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 5 WA * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
using namespace std;

#include <atcoder/modint>
#include <atcoder/segtree>
using namespace atcoder;

using mint = modint998244353;

mint op(mint a, mint b){
  return a + b;
}

mint e(){
  return 0;
}

int main(){
  int n;
  cin >> n;

  segtree<mint, op, e> seg(n + 1);
  vector<vector<int>> d(n + 1);
  for(int i = 1; i <= n; i++){
    for(int j = i; j <= n; j += i){
      d[j].emplace_back(i);
    }
  }

  for(int i = 3; i <= n; i++){
    mint sum = seg.all_prod();
    for(int j: d[i]){
      sum -= seg.get(j);
    }
    mint f = (sum / i + 1) * i / (i - d[i].size());
    for(int j: d[i]){
      seg.set(j, f);
    }
  }
  cout << seg.get(n).val() << endl;
}
0