Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32466 | 郭澍宇 | 【S】T1 | C++ | 通过 | 100 | 51 MS | 2032 KB | 921 | 2024-09-08 19:18:34 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int mod=998244353; void add(int &x,int v){x+=v;if(x>=mod)x-=mod;} const int N=1e5+5; int a[N],b[N],n,m,C1,C2,as[N],bs[N],cnt[N];ll k; int calc1(int x){ int res=0; for(int i=0;i<=C1;i++)cnt[i]=0; for(int i=0;i<=n;i++){ if(as[i]>=x)add(res,cnt[as[i]-x]); cnt[as[i]]++; } return res; } int calc2(int x){ int res=0; for(int i=0;i<=C2;i++)cnt[i]=0; for(int i=0;i<=m;i++){ if(bs[i]>=x)add(res,cnt[bs[i]-x]); cnt[bs[i]]++; } return res; } signed main(){ // freopen("rain.in","r",stdin); // freopen("rain.out","w",stdout); cin>>n>>m>>k; for(int i=1;i<=n;i++)cin>>a[i],C1+=a[i],as[i]=as[i-1]+a[i]; for(int i=1;i<=m;i++)cin>>b[i],C2+=b[i],bs[i]=bs[i-1]+b[i]; int ans=0; for(int i=1;i<=n;i++)if(k%i==0&&i<=C1&&k/i<=C2)add(ans,1ll*calc1(i)*calc2(k/i)%mod); cout<<ans<<endl; return 0; }