Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32282 22fhq 【S】T1 C++ 运行出错 90 132 MS 6268 KB 1581 2024-09-08 14:11:24

Tests(18/20):


#include<bits/stdc++.h> using namespace std; #define int long long int n,m,k,a[100005],b[100005],sa[100005],sb[100005]; int cntsa[100005],cntsb[100005],cnta[100005],cntb[100005]; vector<int>y; const int mod=998244353; void getans(int x){ for(int i=1;i<=n;i++)cntsa[i]=0; for(int i=1;i<=m;i++)cntsb[i]=0; cntsa[0]=cntsb[0]=1; for(int i=1;i<=n;i++){ if(sa[i]>=x){ cnta[x]+=cntsa[sa[i]-x]; } cntsa[sa[i]]++; } for(int i=1;i<=m;i++){ if(sb[i]>=x){ cntb[x]+=cntsb[sb[i]-x]; } cntsb[sb[i]]++; } cnta[x]%=mod; cntb[x]%=mod; return; } void read(int &x){ x=0; char c=getchar(); while(!isdigit(c))c=getchar(); while(isdigit(c))x=x*10+c-'0',c=getchar(); return; } signed main(){ read(n),read(m),read(k); for(int i=1;i<=n;i++){ read(a[i]); sa[i]=sa[i-1]+a[i]; } for(int i=1;i<=m;i++){ read(b[i]); sb[i]=sb[i-1]+b[i]; } for(int i=1;i*i<=k;i++){ if(k%i==0){ // cout<<i<<endl; y.push_back(i); if(i*i!=k){ // cout<<k/i<<endl; y.push_back(k/i); } } } // cout<<y.size(); sort(y.begin(),y.end()); for(int x:y){ getans(x); } int ans=0; for(int x:y){ // cout<<x<<" "<<cnta[x]<<" "<<cntb[k/x]<<endl; ans+=cnta[x]*cntb[k/x]; ans%=mod; } cout<<ans<<endl; return 0; }


测评信息: