提交时间:2024-09-08 15:59:58

运行 ID: 32357

#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e5+10,M=998244353; int n,m,k,ans,a[N],b[N],pra[N],prb[N],D[N],cnt; map<int,int>mp; signed main(){ cin>>n>>m>>k; for(int i=1;i<=n;i++){ cin>>a[i]; pra[i]=pra[i-1]+a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; prb[i]=prb[i-1]+b[i]; } for(int i=1;i*i<=k;i++){ if(k%i==0)D[++cnt]=i; } for(int j=1;j<=cnt;j++){ int d=D[j]; if(k%d==0){ mp.clear();mp[0]=1; int cta=0,ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-d];cta%=M; mp[pra[i]]++; } mp.clear();mp[0]=1; for(int i=1;i<=m;i++){ ctb+=mp[prb[i]-k/d];cta%=M; mp[prb[i]]++; } ans+=(cta*ctb)%M;ans%=M; // if(d!=k/d){ mp.clear();mp[0]=1; cta=0;ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-k/d];cta%=M; mp[pra[i]]++; } mp.clear();mp[0]=1; for(int i=1;i<=m;i++){ ctb+=mp[prb[i]-d];cta%=M; mp[prb[i]]++; } ans+=(cta*ctb)%M;ans%=M; } } } cout<<ans<<endl; return 0; }