Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32376 | 22级廖思学 | 【S】T1 | C++ | 解答错误 | 10 | 27 MS | 4168 KB | 1111 | 2024-09-08 16:16:44 |
#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],mp[N],cnt; inline void init(){ for(int i=0;i<=n;i++)mp[i]=0; mp[0]=1; } signed main(){ // freopen("1.in","r",stdin); 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){ init(); int cta=0,ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-d];cta%=M; mp[pra[i]]++; } init(); 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){ init(); cta=0;ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-k/d];cta%=M; mp[pra[i]]++; } init(); 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; }