Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32330 LYLAKIOIAKIOI 【S】T1 C++ 通过 100 295 MS 1828 KB 1305 2024-09-08 15:22:54

Tests(20/20):


#include<bits/stdc++.h> #define Rf(i,a,b) for(int i=(a);i<=(b);i++) #define Rb(i,a,b) for(int i=(a);i>=(b);i--) using namespace std; const int N=1e5+10; int suma[N],a[N]; int sumb[N],b[N]; int mod=998244353; int n,m,k; int chka(int val){ int it1=1,it2=1; int tmp=0; Rf(i,1,n){ while(it1<=n&&suma[it1]-suma[i-1]<val) it1++; while(it2<=n&&suma[it2]-suma[i-1]<=val) it2++; tmp=(tmp+it2-it1)%mod; }return tmp; } int chkb(int val){ int it1=1,it2=1; int tmp=0; Rf(i,1,m){ while(it1<=m&&sumb[it1]-sumb[i-1]<val) it1++; while(it2<=m&&sumb[it2]-sumb[i-1]<=val) it2++; tmp=(tmp+it2-it1)%mod; }return tmp; } int main(){ cin>>n>>m>>k; Rf(i,1,n) cin>>a[i];Rf(i,1,m) cin>>b[i];suma[0]=0,sumb[0]=0; Rf(i,1,n) suma[i]=suma[i-1]+a[i];Rf(i,1,m) sumb[i]=sumb[i-1]+b[i]; int ans=0; for(int i=1;i*i<=k;i++){ if(k%i==0){ if(max(i,k/i)>=max(n,m)) continue; if(i!=k/i){ int res=(1ll*chka(i)*chkb(k/i)%mod+1ll*chka(k/i)*chkb(i)%mod)%mod; ans=(ans+res)%mod; }else{ int res=(1ll*chka(i)*chkb(k/i)%mod); ans=(ans+res)%mod; } } }cout<<ans; return 0; }


测评信息: