結果

問題 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
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#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;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0