Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32339 | 23级徐泽厚 | 【S】T1 | C++ | 解答错误 | 80 | 96 MS | 664 KB | 900 | 2024-09-08 15:28:49 |
#include<bits/stdc++.h> using namespace std; int n,m; int n1,n2; int k,ans; int a[100005]; int b[100005]; int sp; int check(int x,int y){ int s1=0,s2=0; for(int i=x+1;i<=n1;i++){ s1+=a[i]*a[i-x]%998244353; s1%=998244353; } for(int i=y+1;i<=n2;i++){ s2+=b[i]*b[i-y]%998244353; s2%=998244353; } return s1%998244353*s2%998244353; } int main(){ cin>>n>>m>>k; int cnt=0; for(int i=1;i<=n;i++){ cin>>sp; if(sp) a[++n1]=i-cnt,cnt=i; } a[++n1]=n-cnt+1; cnt=0; for(int i=1;i<=m;i++){ cin>>sp; if(sp) b[++n2]=i-cnt,cnt=i; } b[++n2]=m-cnt+1; for(int i=1;i<=sqrt(k);i++){ if(k%i!=0){ continue; } ans+=check(i,k/i)+(i!=k/i?check(k/i,i):0); ans%=998244353; } cout<<ans<<endl; return 0; }