結果
| 問題 |
No.2683 Two Sheets
|
| コンテスト | |
| ユーザー |
umezo
|
| 提出日時 | 2024-03-21 06:30:36 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 2,000 ms |
| コード長 | 854 bytes |
| コンパイル時間 | 2,831 ms |
| コンパイル使用メモリ | 245,020 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-09-30 10:00:11 |
| 合計ジャッジ時間 | 3,551 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define ALL(v) v.begin(),v.end()
typedef long long ll;
#include<bits/stdc++.h>
using namespace std;
const int MOD=998244353;
ll modpow(ll x,ll n){
x%=MOD;
ll ans=1;
while(n){
if(n&1) ans=ans*x%MOD;
x=x*x%MOD;
n/=2;
}
return ans;
}
int main(){
ios::sync_with_stdio(false);
std::cin.tie(nullptr);
ll h,w,a,b;
cin>>h>>w>>a>>b;
ll h1=0,h2=0,w1=0,w2=0;
ll x=(h-a+1)*(w-b+1)%MOD;
ll mh=min(a,h-a+1),mw=min(b,w-b+1);
rep(i,h){
ll th=min(mh,min((ll)i+1,h-i));
h1=(h1+th)%MOD;
th=th*th%MOD;
h2=(h2+th)%MOD;
}
rep(j,w){
ll tw=min(mw,min((ll)j+1,w-j));
w1=(w1+tw)%MOD;
tw=tw*tw%MOD;
w2=(w2+tw)%MOD;
}
ll ans=2*modpow(x,MOD-2)%MOD*h1%MOD*w1%MOD;
ans=(ans+MOD-modpow(x*x,MOD-2)*h2%MOD*w2%MOD)%MOD;
cout<<ans<<endl;
return 0;
}
umezo