正经题解| X Y A B
2024-07-29 11:29:54
发布于:浙江
70阅读
0回复
0点赞
题目分析
中共有 个数。
我们很容易想到,找 中所有能被 整除数的个数即为 。
能被 或 整除的数都是不满足条件的数。
那么设 中所有不满足条件的数的个数为 , 中所有不满足条件的数的个数为 。
但是 中 与 中会重复统计 与 的公倍数,这个也很好处理,求 的最小公倍数,计算不满足条件的个数减去即可。这里设 的最小公倍数为 。
答案则为:。
AC代码
#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
ll gcd(ll a,ll b) {
if (a % b == 0)return b;
return gcd(b,a%b);
}
int main() {
ll x,y,a,b;
cin >> x >> y >> a >> b;
ll k = a * b / gcd(a,b);
x--;
ll cnt = (y / a + y / b - y / k) - (x / a + x / b - x / k);
cout << y - x - cnt << endl;
return 0;
}
这里空空如也
有帮助,赞一个