湘潭ccpc邀请赛最后一题;
orz orz orz 容斥原理;
#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define maxn 200005
typedef long long ll;
using namespace std;
ll fun(ll a,ll b,ll c)
{
return b / c - (a - 1) / c;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
ll a,b,c,d;
while(cin >> a >> b >> c >> d)
{
ll sum = 0;
sum += (fun(a,b,2) - fun(a,b,2018)) * fun(c,d,1009);//a,b里面是2但不是1009的倍数,那么从c,d里面是1009的倍数;
sum += (b - a + 1 - (fun(a,b,2) + fun(a,b,1009) - fun(a,b,2018))) * fun(c,d,2018);//a,b里面既不是是2的倍数也不是1009的倍数,那么从c,d里面是2018的倍数;
sum += fun(a,b,2018) * (d - c + 1);//a,b里面是2018的倍数;
sum += (fun(a,b,1009) - fun(a,b,2018)) * fun(c,d,2);//a,b里面是1009但不是2的倍数,那么从c,d里面是1009的倍数;
cout << sum << endl;
}
return 0;
}