提交时间:2024-09-08 14:36:02

运行 ID: 32295

#include<bits/stdc++.h> using namespace std; #define int long long #define mod 998244353 int n,m,k,zero_front_posa[500010],zero_front_posb[500010],cnt1_ina,cnt1_inb,ans; int zero_behind_posa[500010],zero_behind_posb[500010]; int Map_apos_to_aid[500010],Map_bpos_to_bid[500010]; int Map_aid_to_apos[500010],Map_bid_to_bpos[500010]; //int cnta[500010<<4],cntb[500010<<4],lazytaga_plus[500010<<4],lazytagb_plus[500010<<4]; int a[500010],b[500010]; void opa(){ int cntz=0; for(int i=1;i<=n;i++){ cin>>a[i]; if(a[i]==1){ zero_front_posa[i]=cntz+1; Map_aid_to_apos[++cnt1_ina]=i; Map_apos_to_aid[i]=cnt1_ina; cntz=0; }else{ cntz++; } }cntz=0; for(int i=n;i>=1;i--){ if(a[i]==1){ zero_behind_posa[i]=cntz+1; //cnt1_ina++; cntz=0; }else{ cntz++; } }// }void opb(){ int cntz=0; for(int i=1;i<=m;i++){ cin>>b[i]; if(b[i]==1){ zero_front_posb[i]=cntz+1; Map_bid_to_bpos[++cnt1_inb]=i; Map_bpos_to_bid[i]=cnt1_inb; cntz=0; }else{ cntz++; } }cntz=0; for(int i=m;i>=1;i--){ if(b[i]==1){ zero_behind_posb[i]=cntz+1; //cnt1_ina++; cntz=0; }else{ cntz++; } }// }signed main(){ //freopen("rain.in","r",stdin); //freopen("rain.out","w",stdout); cin>>n>>m>>k; opa();opb(); //cout<<cnt1_ina<<' '<<cnt1_inb<<'\n'; for(int num=1;num*num<=k;num++){ if(k%num!=0) continue; int nowposa=num,nowposb=k/num,cnta=0,cntb=0; for(int i=1;i+nowposa-1<=cnt1_ina;i++){ int j=i+nowposa-1; cnta=(cnta+zero_front_posa[Map_aid_to_apos[i]]*zero_behind_posa[Map_aid_to_apos[j]]%mod)%mod; }for(int i=1;i+nowposb-1<=cnt1_inb;i++){ int j=i+nowposb-1; cntb=(cntb+zero_front_posb[Map_bid_to_bpos[i]]*zero_behind_posb[Map_bid_to_bpos[j]]%mod)%mod; }ans=(ans+cnta*cntb%mod)%mod; if(num*num==k) continue; cnta=0,cntb=0,nowposa=k/num,nowposb=num; for(int i=1;i+nowposa-1<=cnt1_ina;i++){ int j=i+nowposa-1; cnta=(cnta+zero_front_posa[Map_aid_to_apos[i]]*zero_behind_posa[Map_aid_to_apos[j]]%mod)%mod; }for(int i=1;i+nowposb-1<=cnt1_inb;i++){ int j=i+nowposb-1; cntb=(cntb+zero_front_posb[Map_bid_to_bpos[i]]*zero_behind_posb[Map_bid_to_bpos[j]]%mod)%mod; }ans=(ans+cnta*cntb%mod)%mod; //cout<<num<<' '<<ans<<'\n'; }cout<<ans; }//100pts