提交时间:2024-09-08 16:17:30

运行 ID: 32379

#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e5+10,MOD=998244353; int n,m,k,a[N],b[N],val,ans; int tong[N]; int check(int x,int y){ memset(tong,0,sizeof(tong)); int ans1=0,ans2=0; tong[0]=1; for(int i=1;i<=n;i++){ if(a[i]>=x) ans1+=tong[a[i]-x]; tong[a[i]]++; ans1%=MOD; } memset(tong,0,sizeof(tong)); tong[0]=1; for(int i=1;i<=m;i++){ if(b[i]>=y) ans2+=tong[b[i]-y]; tong[b[i]]++; ans2%=MOD; } return (ans1*ans2)%MOD; } signed main(){ ans=0; cin>>n>>m>>k; for(int i=1;i<=n;i++){ cin>>a[i]; a[i]+=a[i-1]; } for(int i=1;i<=m;i++){ cin>>b[i]; b[i]+=b[i-1]; } for(int i=1;i*i<=k;i++){ if(k%i==0){ ans+=check(i,k/i); ans%=MOD; if(k/i!=i){ ans+=check(k/i,i); ans%=MOD; } } } cout<<ans; return 0; }