Submission #40988802
Source Code Expand
#include<atcoder/all>
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
using namespace atcoder;
const int MAXN=(1<<20)+10,mod=998244353,INF=1e9;
ll mypow(ll a,ll n){
if(!n)return 1;
ll tmp=mypow(a,n/2);tmp=tmp*tmp%mod;
if(n&1)tmp=tmp*a%mod;return tmp;
}
ll myinv(ll a){return mypow(a,mod-2);}
void add(ll& x,ll v){x=(x+v)%mod;}
void sub(ll& x,ll v){x=(x+mod-v)%mod;}
namespace INV{
vector<ll> solve(vector<ll> A,int N){
if(N==1){
vector<ll>ret(1);
ret[0]=myinv(A[0]);
return ret;
}
vector<ll> F0=solve(A,(N+1)>>1);
A.resize(N,0);
A=convolution(A,F0);A.resize(N,0);
A=convolution(A,F0);A.resize(N,0);
F0.resize(N,0);
rep(i,0,N-1)F0[i]=F0[i]*2%mod,sub(F0[i],A[i]);
return F0;
}
};
vector<ll> inv(vector<ll> p,int N){return INV::solve(p,N+1);}
//
namespace CFM{
const ll MAXN=1e6+10,div2=(mod+1)/2;
ll n,m,LIM=1e6;
ll F[MAXN],G[MAXN],ans;
ll fact[MAXN],rfact[MAXN];
ll C(ll n,ll m){
if(m<0 || n<m)return 0;
return fact[n]*rfact[m]%mod*rfact[n-m]%mod;
}
void pre_solve1(){
vector<ll> f(n+1,0),g(n+1,0);
rep(i,0,n)f[i] = C(m-n+2*i,i)%mod;
rep(i,1,n)g[i] = C(2*i,i)%mod;
g[0]=1;
vector<ll> pF=convolution(f,inv(g,n));
rep(i,0,n)F[i]=pF[i]*(m-n+i)%mod;
}
void pre_solve2(){
vector<ll> f(n+1,0),g(n+1,0);
f[0]=(mod-1);
rep(i,1,n)g[i] = C(2*i,i);
g[0]=1;
vector<ll> pF=convolution(f,inv(g,n));
rep(i,1,n)G[i] = pF[i];
}
void solve1(){
vector<ll>pF(n+1,0),pG(n+1,0);
rep(i,0,n)pF[i] = F[i],pG[i] = C(2*i,i);
pF=convolution(pF,pG);
add(ans,pF[n]);
}
void solve2(){
vector<ll>pF(n+1,0),pG(n+1,0),pH(n+1,0);
rep(i,0,n)pF[i] = C(2*i,i),pH[i] = C(2*i+m-n,i);
pF=convolution(pF,pH);pF.resize(n+1);
rep(i,1,n)pG[i] = G[i]*div2%mod*(2*i+1)%mod;
pF=convolution(pF,pG);
add(ans,pF[n]);
}
void solve(){
fact[0]=1;
rep(i,1,LIM)fact[i]=fact[i-1]*i%mod;
rfact[LIM]=myinv(fact[LIM]);
per(i,LIM-1,0)rfact[i]=rfact[i+1]*(i+1)%mod;
cin>>n>>m;
if(n>m)swap(n,m);
if(n==0 || m==0){
cout<<n+m<<endl;
exit(0);
}
pre_solve1();
pre_solve2();
solve1();
solve2();
cout<<ans*myinv(C(n+m,n))%mod<<endl;
}
};
int main(){
CFM::solve();
return 0;
}
Submission Info
Submission Time
2023-04-28 10:38:04+0900
Task
F - Yes or No
User
Crying
Language
C++ (GCC 9.2.1)
Score
2000
Code Size
3039 Byte
Status
AC
Exec Time
922 ms
Memory
112644 KB
Compile Error
./Main.cpp: In function ‘ll mypow(ll, ll)’:
./Main.cpp:22:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
22 | if(n&1)tmp=tmp*a%mod;return tmp;
| ^~
./Main.cpp:22:26: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
22 | if(n&1)tmp=tmp*a%mod;return tmp;
| ^~~~~~
Judge Result
Set Name
Sample
Partial
All
Score / Max Score
0 / 0
1500 / 1500
500 / 500
Status
Set Name
Test Cases
Sample
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt
Partial
sample_01.txt, sample_02.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt
All
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_2_01.txt, subtask_2_02.txt, subtask_2_03.txt, subtask_2_04.txt, subtask_2_05.txt, subtask_2_06.txt, subtask_2_07.txt, subtask_2_08.txt, subtask_2_09.txt, subtask_2_10.txt, subtask_2_11.txt, subtask_2_12.txt, subtask_2_13.txt, subtask_2_14.txt, subtask_2_15.txt, subtask_2_16.txt, subtask_2_17.txt, subtask_2_18.txt, subtask_2_19.txt, subtask_2_20.txt, subtask_2_21.txt, subtask_2_22.txt, subtask_2_23.txt, subtask_2_24.txt, subtask_2_25.txt, subtask_2_26.txt, subtask_2_27.txt, subtask_2_28.txt, subtask_2_29.txt, subtask_2_30.txt, subtask_2_31.txt, subtask_2_32.txt, subtask_2_33.txt, subtask_2_34.txt, subtask_2_35.txt, subtask_2_36.txt, subtask_2_37.txt, subtask_2_38.txt, subtask_2_39.txt, subtask_2_40.txt
Case Name
Status
Exec Time
Memory
sample_01.txt
AC
33 ms
19280 KB
sample_02.txt
AC
26 ms
19120 KB
sample_03.txt
AC
24 ms
19308 KB
sample_04.txt
AC
21 ms
19100 KB
sample_05.txt
AC
22 ms
19180 KB
subtask_1_01.txt
AC
22 ms
19248 KB
subtask_1_02.txt
AC
26 ms
19288 KB
subtask_1_03.txt
AC
25 ms
19260 KB
subtask_1_04.txt
AC
24 ms
19124 KB
subtask_1_05.txt
AC
23 ms
19244 KB
subtask_1_06.txt
AC
28 ms
19320 KB
subtask_1_07.txt
AC
24 ms
19132 KB
subtask_1_08.txt
AC
21 ms
19240 KB
subtask_1_09.txt
AC
31 ms
19120 KB
subtask_1_10.txt
AC
28 ms
19256 KB
subtask_1_11.txt
AC
23 ms
19248 KB
subtask_1_12.txt
AC
30 ms
19728 KB
subtask_1_13.txt
AC
44 ms
20928 KB
subtask_1_14.txt
AC
71 ms
23592 KB
subtask_1_15.txt
AC
215 ms
36048 KB
subtask_1_16.txt
AC
214 ms
35992 KB
subtask_1_17.txt
AC
219 ms
36044 KB
subtask_1_18.txt
AC
214 ms
36072 KB
subtask_1_19.txt
AC
216 ms
36216 KB
subtask_1_20.txt
AC
215 ms
36164 KB
subtask_1_21.txt
AC
215 ms
36208 KB
subtask_1_22.txt
AC
219 ms
36076 KB
subtask_1_23.txt
AC
218 ms
35864 KB
subtask_1_24.txt
AC
213 ms
34456 KB
subtask_1_25.txt
AC
211 ms
33964 KB
subtask_2_01.txt
AC
24 ms
19156 KB
subtask_2_02.txt
AC
26 ms
19280 KB
subtask_2_03.txt
AC
21 ms
19292 KB
subtask_2_04.txt
AC
922 ms
112464 KB
subtask_2_05.txt
AC
913 ms
112384 KB
subtask_2_06.txt
AC
915 ms
112448 KB
subtask_2_07.txt
AC
918 ms
112524 KB
subtask_2_08.txt
AC
917 ms
112404 KB
subtask_2_09.txt
AC
916 ms
112644 KB
subtask_2_10.txt
AC
916 ms
112564 KB
subtask_2_11.txt
AC
916 ms
112436 KB
subtask_2_12.txt
AC
917 ms
112644 KB
subtask_2_13.txt
AC
920 ms
112632 KB
subtask_2_14.txt
AC
918 ms
112560 KB
subtask_2_15.txt
AC
921 ms
112536 KB
subtask_2_16.txt
AC
916 ms
112428 KB
subtask_2_17.txt
AC
909 ms
111084 KB
subtask_2_18.txt
AC
895 ms
103364 KB
subtask_2_19.txt
AC
864 ms
91784 KB
subtask_2_20.txt
AC
27 ms
19180 KB
subtask_2_21.txt
AC
21 ms
19176 KB
subtask_2_22.txt
AC
25 ms
19308 KB
subtask_2_23.txt
AC
25 ms
19320 KB
subtask_2_24.txt
AC
27 ms
19304 KB
subtask_2_25.txt
AC
23 ms
19312 KB
subtask_2_26.txt
AC
28 ms
19432 KB
subtask_2_27.txt
AC
29 ms
19524 KB
subtask_2_28.txt
AC
39 ms
20800 KB
subtask_2_29.txt
AC
55 ms
21900 KB
subtask_2_30.txt
AC
218 ms
36224 KB
subtask_2_31.txt
AC
431 ms
54596 KB
subtask_2_32.txt
AC
910 ms
112488 KB
subtask_2_33.txt
AC
913 ms
112460 KB
subtask_2_34.txt
AC
917 ms
112480 KB
subtask_2_35.txt
AC
904 ms
110980 KB
subtask_2_36.txt
AC
909 ms
110272 KB
subtask_2_37.txt
AC
433 ms
55924 KB
subtask_2_38.txt
AC
119 ms
28228 KB
subtask_2_39.txt
AC
892 ms
105084 KB
subtask_2_40.txt
AC
209 ms
33876 KB