题目:https://ac.nowcoder.com/acm/contest/894/B
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<cstring>
#include<cmath>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=1000005;
LL preA[maxn],preB[maxn];
LL n,m,l,r;
vector<LL>va,vb;
int main()
{
cin>>n>>m>>l>>r;
for(int i=1;i<=n;i++)
{
int t;
cin>>t;
preA[i]=preA[i-1]+t;
}
for(int i=1;i<=m;i++)
{
int t;
cin>>t;
preB[i]=preB[i-1]+t;
}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
va.push_back(preA[j]-preA[i-1]);
}
}
for(int i=1;i<=m;i++)
{
for(int j=i;j<=m;j++)
{
vb.push_back(preB[j]-preB[i-1]);
}
}
sort(va.begin(),va.end());
sort(vb.begin(),vb.end());
int len=va.size();
LL ans=0;
for(int i=0;i<len;i++)
{
LL lp=l/va[i];
if(l%va[i])
lp++;
LL rp=r/va[i];
rp++;
if(lp<=rp)
{
LL num=lower_bound(vb.begin(),vb.end(),rp)-lower_bound(vb.begin(),vb.end(),lp);
ans+=num;
}
}
cout << ans << endl;
return 0;
}