Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
32250 | LYLAKIOI | 【S】T1 | C++ | 通过 | 100 | 39 MS | 1436 KB | 1344 | 2024-09-08 13:12:24 |
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define p_b push_back using namespace std; typedef long long ll; const int maxn=1e5+10,mod=998244353; inline ll read(){ ll x=0;short t=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; }int n,m,k,a[maxn],b[maxn],t[maxn]; void slv(){ n=read(),m=read(),k=read(); up(i,1,n)a[i]=read();up(i,1,m)b[i]=read(); up(i,1,n)a[i]+=a[i-1];up(i,1,m)b[i]+=b[i-1]; vector<int>v; for(ll i=1;i*i<=k;++i){ if(k%i)continue; v.p_b(i);if(i*i!=k)v.p_b(k/i); }int res=0; for(int x:v){ if(x>=1&&x<=n&&k/x>=1&&k/x<=m){ up(i,0,n)t[i]=0;t[0]++;ll cnt=0; up(i,1,n){if(a[i]>=x)cnt+=t[a[i]-x];t[a[i]]++;}cnt%=mod; up(i,0,m)t[i]=0;t[0]++;int cnt2=0; up(i,1,m){if(b[i]>=k/x)cnt2+=t[b[i]-k/x];t[b[i]]++;}cnt2%=mod; (res+=cnt*cnt2%mod)%=mod; } }cout<<res; }int main(){ //freopen("rain.in","r",stdin); //freopen("rain.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }