题目链接:http://exam.upc.edu.cn/problem.php?cid=1374&pid=10
题意:容斥原理求1 2 1009 2018
让两个的乘积是2018的倍数。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef struct point{
ll L,R;
}node;
node t[4]={0};
int main()
{
while(~scanf("%lld%lld%lld%lld",&t[1].L,&t[1].R,&t[2].L,&t[2].R))
{
ll a[5]={0},b[5]={0},c[5]={0};
a[0]=t[1].R-(t[1].L-1);
a[1]=t[1].R/2-(t[1].L-1)/2;
a[3]=t[1].R/2018-(t[1].L-1)/2018;
a[2]=t[1].R/1009-(t[1].L-1)/1009-a[3];
b[0]=t[2].R-(t[2].L-1);
b[1]=t[2].R/2-(t[2].L-1)/2;
b[3]=t[2].R/2018-(t[2].L-1)/2018;
b[2]=t[2].R/1009-(t[2].L-1)/1009-b[3];
ll ans=0;
ans=b[0]*a[3]+a[0]*b[3]+b[2]*(a[1]-a[3])+a[2]*(b[1]-b[3])-b[3]*a[3];
printf("%lld\n",ans);
}
return 0;
}