题意
x属于第一个区间, y属于第二个区间, 问有满足 x乘y是2017的倍数 的个数
题解
代码
#include <bits/stdc++.h>
using namespace std;
#define rg register
#define sc scanf
#define pf printf
typedef long long ll;
int main ( ) { // freopen( "F:\\in\\.txt" , "r" , stdin );
ll a,b,c,d;
while( cin >> a >> b >> c >> d ){
ll e= b/2017-(a-1)/2017; // 第一个区间内能被2017整除的数的个数
ll f= d/2017-(c-1)/2017; // 第二个区间
ll g= e*(d-c+1); // 集合A, 其中存的是第一区间2017的倍数*第二区间长度
// 也就是说, 存的是 是2017倍数的x乘y 有几对
ll h= f*(b-a+1); // 集合B
ll k = g+h-e*f;
cout << k << endl;
// cout << ( (b-a+1)/2017*(d-c+1) // 数学除法和计算机除法不一样
// +(d-c+1)/2017*(b-a+1)
// -(b-a+1)/2017*(d-c+1)/2017 ) << endl;
}
return 0 ;
}
// x属于第一个区间, y属于第二个区间, 问有满足 x乘y是2017的倍数 的个数
// 1 2017 1 2016
// 1 1000000000 1 1000000000
// 2016
// 991324197233775