提交时间:2024-09-08 14:13:47
运行 ID: 32284
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e5+10; const ll mod=998244353; ll n,m,k,cnt=0; ll a[maxn],b[maxn],suma[maxn],sumb[maxn],_div[maxn],ansa[maxn],numans[maxn]; map<ll,int> mp,mp1; int main(){ // freopen("rain.in","r",stdin); // freopen("rain.out","w",stdout); scanf("%lld%lld%lld",&n,&m,&k); suma[0]=sumb[0]=0; for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); suma[i]=suma[i-1]+a[i]; mp[suma[i]]++; } for(int i=1;i<=m;i++){ scanf("%lld",&b[i]); sumb[i]=sumb[i-1]+b[i]; mp1[sumb[i]]++; } int tot=0; for(int i=1;i*i*1ll<=k;i++){ if(k%i) continue; if(k/i>100000) continue; _div[++tot]=i; if(i*i!=k) _div[++tot]=k/i; } mp1[0]++; mp[0]++; sort(_div+1,_div+1+tot); for(int i=1;i<=m;i++){ for(int j=1;j<=tot;j++){ if(sumb[i]<_div[j]) break; numans[_div[j]]=(numans[_div[j]]+mp1[sumb[i]-_div[j]])%mod; // cout<<numans[_div[j]]<<" "<<_div[j]<<" "<<i<<" "<<sumb[i]<<endl; } } for(int i=1;i<=m;i++){ for(int j=1;j<=tot;j++){ if(suma[i]<_div[j]) break; ansa[_div[j]]=(ansa[_div[j]]+mp[suma[i]-_div[j]])%mod; } } for(int i=1;i<=tot;i++){ cnt=(cnt+ansa[_div[i]]*numans[k/_div[i]])%mod; } printf("%lld",cnt); fclose(stdin); fclose(stdout); return 0; }