結果
問題 | No.2048 L(I+D)S |
ユーザー | vjudge1 |
提出日時 | 2024-12-30 16:59:17 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 2,318 bytes |
コンパイル時間 | 1,814 ms |
コンパイル使用メモリ | 167,124 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-30 16:59:42 |
合計ジャッジ時間 | 2,652 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 1 ms
5,248 KB |
testcase_05 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 2 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 5 ms
5,248 KB |
testcase_09 | AC | 3 ms
5,248 KB |
testcase_10 | AC | 3 ms
5,248 KB |
testcase_11 | AC | 6 ms
5,248 KB |
testcase_12 | AC | 4 ms
5,248 KB |
testcase_13 | AC | 2 ms
5,248 KB |
testcase_14 | AC | 3 ms
5,248 KB |
testcase_15 | AC | 2 ms
5,248 KB |
testcase_16 | AC | 6 ms
5,248 KB |
testcase_17 | AC | 6 ms
5,248 KB |
testcase_18 | AC | 6 ms
5,248 KB |
ソースコード
#include<bits/stdc++.h> #define pb push_back #define SZ(x) (int)(x).size() using namespace std; const int N=1e5+5,mod=998244353; typedef long long ll; template<class T> T mksm(T x,ll y){T z={1};while(y){if(y&1)z=z*x;x=x*x,y>>=1;}return z;} template<unsigned P=0> struct mint{ unsigned v;static unsigned mod;mint()=default; template<class T> mint(T x){x%=(signed)getmod(),v=x<0?x+getmod():x;} static unsigned getmod(){return P>0?P:mod;} static void setmod(unsigned m){mod=m;} mint operator+() const{return *this;} mint operator-() const{return mint(0)-*this;} mint inv() const{return assert(v),mksm(*this,getmod()-2);} mint &operator+=(const mint &q){(v+=q.v)<getmod()||(v-=getmod());return *this;} mint &operator-=(const mint &q){(v-=q.v)<getmod()||(v+=getmod());return *this;} mint &operator*=(const mint &q){v=1ull*v*q.v%getmod();return *this;} mint &operator/=(const mint &q){v=1ull*v*q.inv().v%getmod();return *this;} friend mint operator+(mint p,const mint &q){return p+=q;} friend mint operator-(mint p,const mint &q){return p-=q;} friend mint operator*(mint p,const mint &q){return p*=q;} friend mint operator/(mint p,const mint &q){return p/=q;} friend bool operator==(const mint &p,const mint &q){return p.v==q.v;} friend bool operator!=(const mint &p,const mint &q){return p.v!=q.v;} friend bool operator<(const mint &p,const mint &q){return p.v<q.v;} friend bool operator>(const mint &p,const mint &q){return p.v>q.v;} friend bool operator<=(const mint &p,const mint &q){return p.v<=q.v;} friend bool operator>=(const mint &p,const mint &q){return p.v>=q.v;} friend istream &operator>>(istream &is,mint &a){is>>a.v;return is;} friend ostream &operator<<(ostream &os,const mint &a){os<<a.v;return os;} }; template<> unsigned mint<0>::mod=998244353; typedef mint<mod> MI; int n; MI fc[N],ifc[N],iv[N],ans; inline void init(int n){ fc[0]=1;for(int i=1;i<=n;i++)fc[i]=fc[i-1]*i; ifc[n]=1/fc[n];for(int i=n;i;i--)ifc[i-1]=ifc[i]*i; iv[1]=1;for(int i=2;i<=n;i++)iv[i]=iv[mod%i]*(mod-mod/i); } inline MI C(int x,int y){if(x<y||y<0)return 0;return fc[x]*ifc[y]*ifc[x-y];} inline MI sqr(MI x){return x*x;} signed main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>n;init(n); for(int i=2;i<n-1;i++) ans+=sqr(fc[n]*ifc[i-2]*ifc[n-i-2]*iv[i]*iv[n-i]*iv[n-1]); cout<<ans<<'\n'; return 0; }