A.The Wall

题意:两个人粉刷墙壁,甲从粉刷标号为x,2x,3x...的小块乙粉刷标号为y,2y,3y...的小块问在某个区间内被重复粉刷的小块的个数。

分析:求出x和y的最小公倍数,然后做一个一维的区间减法就可以了。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long LL;
int x, y, a, b;

int main() {
    scanf("%d %d %d %d", &x, &y, &a, &b);
    int d = __gcd(x, y);
    int lcm = x / d * y;
    printf("%d\n", b/lcm - (a-1)/lcm);
    return 0;
} 
View Code

相关文章: