結果
問題 |
No.3187 Mingle
|
ユーザー |
|
提出日時 | 2025-06-20 23:09:28 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 810 ms / 2,500 ms |
コード長 | 1,066 bytes |
コンパイル時間 | 5,587 ms |
コンパイル使用メモリ | 336,672 KB |
実行使用メモリ | 56,512 KB |
最終ジャッジ日時 | 2025-06-20 23:09:52 |
合計ジャッジ時間 | 22,697 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
#include<bits/stdc++.h> using namespace std; #include<atcoder/all> using namespace atcoder; using mint=atcoder::modint; #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define rng(i,l,r) for(int i=(l);i<(r);i++) #define rrep(i,n) for(int i=(n)-1;i>=0;i--) #define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--) #define fi first #define se second #define all(x) (x).begin(),(x).end() struct fast_io{fast_io(){std::cin.tie(nullptr)->sync_with_stdio(false);}}_; signed main(){ int N,P;cin>>N>>P; fenwick_tree<mint> sm(N+2); modint::set_mod(P); vector<mint> dp(N+1); vector<vector<int>> trans(N+1); for(int i=1;i<=N;i++){ for(int j=i;j<=N;j+=i){ trans[j].push_back(i); } if(i>2){ mint t=sm.sum(0,i+1); t=t/i+1; t*=i/mint(i-trans[i].size()); dp[i]=t; } mint t=dp[i]; for(auto&&l:trans[i]){ sm.add(i+1,t); sm.add(min(N+1,i+l),-t); } } // for(int i=1;i<=N;i++){ // cout<<dp[i].val()<<" "; // } // cout<<endl; cout<<dp[N].val()<<endl; }