Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32427 | liuyile | 【S】T1 | C++ | 通过 | 100 | 49 MS | 5064 KB | 1404 | 2024-09-08 17:07:28 |
#include <bits/stdc++.h> using namespace std; #define int long long #define endl "\n" int n,m,k; int a[200300],b[200300]; int sa[200300],sb[200300],ct[200300]; vector<int>P,cta,ctb; map<int,int>ca,cb; signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("rain.in","r",stdin); // freopen("rain.out","w",stdout); cin>>n>>m>>k; for(int i=1;i*i<=k;i++) if(k%i==0){ P.push_back(i); if(i*i!=k)P.push_back(k/i); } sort(P.begin(),P.end()); cta.resize(P.size()); ctb.resize(P.size()); for(int i=1;i<=n;i++) cin>>a[i],sa[i]=sa[i-1]+a[i]; for(int i=1;i<=m;i++) cin>>b[i],sb[i]=sb[i-1]+b[i]; ct[0]++; int d=P.size(); for(int i=1;i<=n;i++){ for(int j=0;j<d&&sa[i]>=P[j];j++) cta[j]+=ct[sa[i]-P[j]]; ct[sa[i]]++; } memset(ct,0,sizeof(ct)); ct[0]++; for(int i=1;i<=m;i++){ for(int j=0;j<d&&sb[i]>=P[j];j++) ctb[j]+=ct[sb[i]-P[j]]; ct[sb[i]]++; } for(int j=0;j<d;j++) ca[P[j]]=cta[j], cb[P[j]]=ctb[j]; int res=0; const int M=998244353; for(int i=1;i*i<=k;i++) if(k%i==0){ res=(res+ca[i]*cb[k/i])%M; if(i*i!=k) res=(res+ca[k/i]*cb[i])%M;; } cout<<res<<endl; cout.flush(); fflush(stdout); return 0; }