Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32310 李羽乔 【S】T1 C++ 解答错误 90 251 MS 2632 KB 1230 2024-09-08 15:01:34

Tests(18/20):


#include<bits/stdc++.h> using namespace std; const int N = 1e5+10,md = 998244353; int n,m,k,a[N],b[N],sum[N],sum2[N]; long long int mp[N]; long long int ans; signed main(){ ios::sync_with_stdio(false); cin>>n>>m>>k; for(int i=1;i<=n;i++){ cin>>a[i]; sum[i]=sum[i-1]+a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; sum2[i]=sum2[i-1]+b[i]; } for(long long int i=1;i<=sqrt(k);i++){ if(k%i==0){ long long int z=k/i; long long int x=0; for(int j=0;j<=n;j++) mp[j]=0; for(int j=0;j<=n;j++){ if(i<=sum[j]) x=(x%md+mp[sum[j]-i]%md); mp[sum[j]]++; } for(int j=0;j<=n;j++) mp[j]=0; long long int y=0; for(int j=0;j<=m;j++){ if(z<=sum2[j]) y=(y%md+mp[sum2[j]-z]%md); mp[sum2[j]]++; } //cout<<x<<" "<<y<<endl; ans=(ans%md+x%md*y%md)%md; if(i==z) continue; for(int j=0;j<=n;j++) mp[j]=0; x=0; for(int j=0;j<=n;j++){ if(z<=sum[j]) x=(x%md+mp[sum[j]-z]%md); mp[sum[j]]++; } for(int j=0;j<=n;j++) mp[j]=0; y=0; for(int j=0;j<=m;j++){ if(i<=sum2[j]) y=(y%md+mp[sum2[j]-i]%md); mp[sum2[j]]++; } //cout<<x<<" "<<y<<endl; ans=(ans%md+x%md*y%md)%md; } } cout<<ans<<endl; return 0; }


测评信息: