QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#49895 | #4798. Floor Tiles in a Park | Crysfly | AC ✓ | 2ms | 3724kb | C++17 | 3.3kb | 2022-09-23 23:02:22 | 2022-09-23 23:02:44 |
Judging History
answer
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define int long long
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define mod 998244353
struct modint{
int x;
modint(int o=0){x=o;}
modint &operator = (int o){return x=o,*this;}
modint &operator +=(modint o){return x=x+o.x>=mod?x+o.x-mod:x+o.x,*this;}
modint &operator -=(modint o){return x=x-o.x<0?x-o.x+mod:x-o.x,*this;}
modint &operator *=(modint o){return x=1ll*x*o.x%mod,*this;}
modint &operator ^=(int b){
modint a=*this,c=1;
for(;b;b>>=1,a*=a)if(b&1)c*=a;
return x=c.x,*this;
}
modint &operator /=(modint o){return *this *=o^=mod-2;}
friend modint operator +(modint a,modint b){return a+=b;}
friend modint operator -(modint a,modint b){return a-=b;}
friend modint operator *(modint a,modint b){return a*=b;}
friend modint operator /(modint a,modint b){return a/=b;}
friend modint operator ^(modint a,int b){return a^=b;}
bool operator ! () {return !x;}
modint operator - () {return x?mod-x:0;}
};
inline modint qpow(modint x,int y){return x^y;}
vector<modint> fac,ifac,iv;
inline void initC(int n)
{
if(iv.empty())fac=ifac=iv=vector<modint>(2,1);
int m=iv.size(); ++n;
if(m>=n)return;
iv.resize(n),fac.resize(n),ifac.resize(n);
For(i,m,n-1){
iv[i]=iv[mod%i]*(mod-mod/i);
fac[i]=fac[i-1]*i,ifac[i]=ifac[i-1]*iv[i];
}
}
inline modint C(int n,int m){
if(m<0||n<m)return 0;
return initC(n),fac[n]*ifac[m]*ifac[n-m];
}
inline modint sign(int n){return (n&1)?(mod-1):(1);}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 200005
#define inf 0x3f3f3f3f
int n,m;
int k;
modint cd(int n,int m){
modint res=1; initC(m+1);
Rep(i,m,1)res*=(n-i+1);
return res*ifac[m];
}
modint f[5][5][2],sf[5][5];
signed main()
{
For(i,0,4)f[i][0][0]=f[0][i][1]=1,sf[i][0]=sf[0][i]=1;
For(i,1,3)
For(j,1,3){
For(i1,0,i-1)
For(j1,0,j)
f[i][j][0]+=f[i1][j1][1]*sf[i-i1-1][j-j1]*C(j,j1);
For(i1,0,i)
For(j1,0,j-1)
f[i][j][1]+=f[i1][j1][0]*sf[i-i1][j-j1-1]*C(i,i1);
sf[i][j]=f[i][j][0]+f[i][j][1];
// cout<<i<<' '<<j<<" "<<sf[i][j].x<<endl;
}
sf[2][2]+=2;
n=read(),m=read(),k=read();
if(k==1)cout<<1<<'\n';
if(k==2)cout<<(n-1+m-1)%mod<<'\n';
if(k==3){
modint res=0;
res+=cd(n-1,2)+cd(m-1,2)+((n-1)*(m-1)%mod*4%mod);
cout<<res.x<<'\n';
}
if(k==4){
modint res=0;
res+=cd(n-1,3)+cd(m-1,3);
res+=(n-1)*cd(m-1,2)*(3+4+4);
res+=(m-1)*cd(n-1,2)*(3+4+4);
res+=(n-1)*(m-1)%mod;
cout<<res.x<<"\n";
}
if(k==5){
modint res=0;
res+=cd(n-1,4);
res+=cd(m-1,4);
// cout<<"res: "<<res.x<<endl;
res+=(m-1)*cd(n-1,3)*sf[1][3];
res+=(n-1)*cd(m-1,3)*sf[1][3];
res+=cd(n-1,2)*cd(m-1,2)*sf[2][2];
// cout<<"f13 "<<(((m-1)*cd(n-1,3))+(n-1)*cd(m-1,3)).x<<endl;
// cout<<"f22 "<<(cd(n-1,2)*cd(m-1,2)).x<<endl;
res+=cd(n-1,2)*(m-1)*7;
res+=cd(m-1,2)*(n-1)*7;
// cout<<"ftmp "<<((cd(n-1,2)*(m-1))+cd(m-1,2)*(n-1)).x<<endl;
cout<<res.x<<'\n';
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3432kb
input:
2 3 5
output:
7
result:
ok 1 number(s): "7"
Test #2:
score: 0
Accepted
time: 1ms
memory: 3720kb
input:
4 3 5
output:
307
result:
ok 1 number(s): "307"
Test #3:
score: 0
Accepted
time: 1ms
memory: 3576kb
input:
6 372065168 5
output:
114514
result:
ok 1 number(s): "114514"
Test #4:
score: 0
Accepted
time: 2ms
memory: 3504kb
input:
6 7 3
output:
145
result:
ok 1 number(s): "145"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3484kb
input:
4 8 2
output:
10
result:
ok 1 number(s): "10"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
7 5 4
output:
1104
result:
ok 1 number(s): "1104"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3672kb
input:
8 6 1
output:
1
result:
ok 1 number(s): "1"
Test #8:
score: 0
Accepted
time: 2ms
memory: 3664kb
input:
8 2 5
output:
1092
result:
ok 1 number(s): "1092"
Test #9:
score: 0
Accepted
time: 2ms
memory: 3652kb
input:
2 7 4
output:
191
result:
ok 1 number(s): "191"
Test #10:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
6 6 4
output:
1145
result:
ok 1 number(s): "1145"
Test #11:
score: 0
Accepted
time: 2ms
memory: 3556kb
input:
1 5 5
output:
1
result:
ok 1 number(s): "1"
Test #12:
score: 0
Accepted
time: 2ms
memory: 3432kb
input:
5 1 5
output:
1
result:
ok 1 number(s): "1"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3724kb
input:
1 4 4
output:
1
result:
ok 1 number(s): "1"
Test #14:
score: 0
Accepted
time: 2ms
memory: 3512kb
input:
2 2 4
output:
1
result:
ok 1 number(s): "1"
Test #15:
score: 0
Accepted
time: 2ms
memory: 3508kb
input:
4 1 4
output:
1
result:
ok 1 number(s): "1"
Test #16:
score: 0
Accepted
time: 2ms
memory: 3556kb
input:
1 3 3
output:
1
result:
ok 1 number(s): "1"
Test #17:
score: 0
Accepted
time: 2ms
memory: 3524kb
input:
2 2 3
output:
4
result:
ok 1 number(s): "4"
Test #18:
score: 0
Accepted
time: 0ms
memory: 3432kb
input:
3 1 3
output:
1
result:
ok 1 number(s): "1"
Test #19:
score: 0
Accepted
time: 1ms
memory: 3560kb
input:
1 2 2
output:
1
result:
ok 1 number(s): "1"
Test #20:
score: 0
Accepted
time: 2ms
memory: 3520kb
input:
2 1 2
output:
1
result:
ok 1 number(s): "1"
Test #21:
score: 0
Accepted
time: 2ms
memory: 3628kb
input:
2 2 2
output:
2
result:
ok 1 number(s): "2"
Test #22:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
1 1 1
output:
1
result:
ok 1 number(s): "1"
Test #23:
score: 0
Accepted
time: 1ms
memory: 3520kb
input:
1 2 1
output:
1
result:
ok 1 number(s): "1"
Test #24:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
2 1 1
output:
1
result:
ok 1 number(s): "1"
Test #25:
score: 0
Accepted
time: 2ms
memory: 3560kb
input:
1000000000 1000000000 5
output:
709563207
result:
ok 1 number(s): "709563207"
Test #26:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
1000000000 1000000000 4
output:
966434087
result:
ok 1 number(s): "966434087"
Test #27:
score: 0
Accepted
time: 2ms
memory: 3524kb
input:
1000000000 1000000000 3
output:
566309320
result:
ok 1 number(s): "566309320"
Test #28:
score: 0
Accepted
time: 2ms
memory: 3664kb
input:
1000000000 1000000000 2
output:
3511292
result:
ok 1 number(s): "3511292"
Test #29:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
1000000000 1000000000 1
output:
1
result:
ok 1 number(s): "1"
Test #30:
score: 0
Accepted
time: 2ms
memory: 3576kb
input:
1 1000000000 5
output:
206661581
result:
ok 1 number(s): "206661581"
Test #31:
score: 0
Accepted
time: 1ms
memory: 3560kb
input:
1000000000 1 5
output:
206661581
result:
ok 1 number(s): "206661581"
Test #32:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
1 1000000000 4
output:
243529510
result:
ok 1 number(s): "243529510"
Test #33:
score: 0
Accepted
time: 2ms
memory: 3524kb
input:
1000000000 1 4
output:
243529510
result:
ok 1 number(s): "243529510"
Test #34:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
1 1000000000 3
output:
854524156
result:
ok 1 number(s): "854524156"
Test #35:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
1000000000 1 3
output:
854524156
result:
ok 1 number(s): "854524156"
Test #36:
score: 0
Accepted
time: 2ms
memory: 3488kb
input:
1 1000000000 2
output:
1755646
result:
ok 1 number(s): "1755646"
Test #37:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
1000000000 1 2
output:
1755646
result:
ok 1 number(s): "1755646"
Test #38:
score: 0
Accepted
time: 1ms
memory: 3556kb
input:
1 1000000000 1
output:
1
result:
ok 1 number(s): "1"
Test #39:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
1000000000 1 1
output:
1
result:
ok 1 number(s): "1"
Test #40:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
998244353 998244353 5
output:
104
result:
ok 1 number(s): "104"
Test #41:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
998244353 998244353 2
output:
998244351
result:
ok 1 number(s): "998244351"
Test #42:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
998244353 998244353 3
output:
6
result:
ok 1 number(s): "6"
Test #43:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
998244353 998244353 4
output:
998244330
result:
ok 1 number(s): "998244330"
Test #44:
score: 0
Accepted
time: 1ms
memory: 3564kb
input:
998244353 998244353 1
output:
1
result:
ok 1 number(s): "1"
Test #45:
score: 0
Accepted
time: 0ms
memory: 3528kb
input:
167959139 481199252 5
output:
636943179
result:
ok 1 number(s): "636943179"
Test #46:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
641009859 54748096 4
output:
21254172
result:
ok 1 number(s): "21254172"
Test #47:
score: 0
Accepted
time: 2ms
memory: 3488kb
input:
524125987 923264237 5
output:
806978440
result:
ok 1 number(s): "806978440"
Test #48:
score: 0
Accepted
time: 2ms
memory: 3568kb
input:
702209411 496813081 4
output:
567318593
result:
ok 1 number(s): "567318593"
Test #49:
score: 0
Accepted
time: 2ms
memory: 3676kb
input:
585325539 365329221 5
output:
135702788
result:
ok 1 number(s): "135702788"
Test #50:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
58376259 643910770 4
output:
906285669
result:
ok 1 number(s): "906285669"
Test #51:
score: 0
Accepted
time: 1ms
memory: 3520kb
input:
941492387 72235422 3
output:
984446484
result:
ok 1 number(s): "984446484"
Test #52:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
824608515 940751563 4
output:
714960410
result:
ok 1 number(s): "714960410"
Test #53:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
2691939 514300407 2
output:
516992344
result:
ok 1 number(s): "516992344"
Test #54:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
802030518 598196518 2
output:
401982681
result:
ok 1 number(s): "401982681"
Test #55:
score: 0
Accepted
time: 0ms
memory: 3500kb
input:
685146646 26521171 5
output:
359577836
result:
ok 1 number(s): "359577836"
Test #56:
score: 0
Accepted
time: 2ms
memory: 3584kb
input:
863230070 895037311 4
output:
615300281
result:
ok 1 number(s): "615300281"
Test #57:
score: 0
Accepted
time: 2ms
memory: 3664kb
input:
41313494 468586155 5
output:
965938269
result:
ok 1 number(s): "965938269"
Test #58:
score: 0
Accepted
time: 2ms
memory: 3668kb
input:
219396918 747167704 4
output:
53928649
result:
ok 1 number(s): "53928649"
Test #59:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
102513046 615683844 5
output:
875740368
result:
ok 1 number(s): "875740368"
Test #60:
score: 0
Accepted
time: 2ms
memory: 3720kb
input:
985629174 189232688 4
output:
219741272
result:
ok 1 number(s): "219741272"
Test #61:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
458679894 912524637 5
output:
941073341
result:
ok 1 number(s): "941073341"
Test #62:
score: 0
Accepted
time: 0ms
memory: 3532kb
input:
341796022 486073481 5
output:
845467585
result:
ok 1 number(s): "845467585"
Test #63:
score: 0
Accepted
time: 2ms
memory: 3560kb
input:
519879446 764655030 4
output:
706045468
result:
ok 1 number(s): "706045468"
Test #64:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
452405440 586588704 5
output:
335640429
result:
ok 1 number(s): "335640429"
Test #65:
score: 0
Accepted
time: 2ms
memory: 3436kb
input:
335521569 160137548 4
output:
951724102
result:
ok 1 number(s): "951724102"
Test #66:
score: 0
Accepted
time: 2ms
memory: 3500kb
input:
808572289 733686393 4
output:
619610341
result:
ok 1 number(s): "619610341"
Test #67:
score: 0
Accepted
time: 2ms
memory: 3560kb
input:
691688417 162011045 5
output:
616539456
result:
ok 1 number(s): "616539456"
Test #68:
score: 0
Accepted
time: 2ms
memory: 3512kb
input:
869771841 30527185 5
output:
763472087
result:
ok 1 number(s): "763472087"
Test #69:
score: 0
Accepted
time: 2ms
memory: 3496kb
input:
752887969 604076030 4
output:
483504483
result:
ok 1 number(s): "483504483"
Test #70:
score: 0
Accepted
time: 1ms
memory: 3652kb
input:
930971393 177624874 4
output:
921062862
result:
ok 1 number(s): "921062862"
Test #71:
score: 0
Accepted
time: 0ms
memory: 3720kb
input:
109054817 751173719 5
output:
84946027
result:
ok 1 number(s): "84946027"
Test #72:
score: 0
Accepted
time: 1ms
memory: 3720kb
input:
992170945 324722563 3
output:
386957789
result:
ok 1 number(s): "386957789"
Test #73:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
170254369 48014511 4
output:
848817111
result:
ok 1 number(s): "848817111"
Test #74:
score: 0
Accepted
time: 0ms
memory: 3664kb
input:
248004555 280013594 3
output:
784895115
result:
ok 1 number(s): "784895115"
Test #75:
score: 0
Accepted
time: 2ms
memory: 3580kb
input:
131120683 148529734 5
output:
652027866
result:
ok 1 number(s): "652027866"
Test #76:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
604171403 722078578 5
output:
912747535
result:
ok 1 number(s): "912747535"
Test #77:
score: 0
Accepted
time: 2ms
memory: 3568kb
input:
487287531 295627423 5
output:
642940101
result:
ok 1 number(s): "642940101"
Test #78:
score: 0
Accepted
time: 1ms
memory: 3432kb
input:
665370955 18919371 3
output:
799728148
result:
ok 1 number(s): "799728148"
Test #79:
score: 0
Accepted
time: 2ms
memory: 3568kb
input:
843454379 297500920 4
output:
732179859
result:
ok 1 number(s): "732179859"
Test #80:
score: 0
Accepted
time: 2ms
memory: 3496kb
input:
21537803 166017060 4
output:
546398482
result:
ok 1 number(s): "546398482"
Test #81:
score: 0
Accepted
time: 2ms
memory: 3488kb
input:
904653932 739565904 5
output:
24413120
result:
ok 1 number(s): "24413120"
Test #82:
score: 0
Accepted
time: 2ms
memory: 3564kb
input:
787770060 313114749 5
output:
299104715
result:
ok 1 number(s): "299104715"
Test #83:
score: 0
Accepted
time: 2ms
memory: 3636kb
input:
260820780 181630889 5
output:
929524647
result:
ok 1 number(s): "929524647"
Test #84:
score: 0
Accepted
time: 0ms
memory: 3724kb
input:
43603670 268405779 5
output:
811242775
result:
ok 1 number(s): "811242775"
Test #85:
score: 0
Accepted
time: 2ms
memory: 3672kb
input:
221687094 136921920 5
output:
381700361
result:
ok 1 number(s): "381700361"
Test #86:
score: 0
Accepted
time: 2ms
memory: 3652kb
input:
399770518 710470764 5
output:
13710244
result:
ok 1 number(s): "13710244"
Test #87:
score: 0
Accepted
time: 2ms
memory: 3556kb
input:
282886646 284019609 5
output:
186074064
result:
ok 1 number(s): "186074064"
Test #88:
score: 0
Accepted
time: 0ms
memory: 3696kb
input:
460970070 857568453 5
output:
871930088
result:
ok 1 number(s): "871930088"
Test #89:
score: 0
Accepted
time: 1ms
memory: 3552kb
input:
639053494 285893105 5
output:
381113127
result:
ok 1 number(s): "381113127"
Test #90:
score: 0
Accepted
time: 2ms
memory: 3668kb
input:
817136918 154409246 5
output:
904298071
result:
ok 1 number(s): "904298071"
Test #91:
score: 0
Accepted
time: 2ms
memory: 3668kb
input:
700253046 727958090 5
output:
722840722
result:
ok 1 number(s): "722840722"
Test #92:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
583369174 301506934 5
output:
4601844
result:
ok 1 number(s): "4601844"
Test #93:
score: 0
Accepted
time: 2ms
memory: 3648kb
input:
56419894 875055779 5
output:
396259549
result:
ok 1 number(s): "396259549"
Test #94:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
134170081 256797965 5
output:
976322422
result:
ok 1 number(s): "976322422"
Test #95:
score: 0
Accepted
time: 2ms
memory: 3668kb
input:
998244354 998244354 2
output:
0
result:
ok 1 number(s): "0"
Test #96:
score: 0
Accepted
time: 2ms
memory: 3580kb
input:
5 5 5
output:
3474
result:
ok 1 number(s): "3474"