Problem:
Score : 300 points

Problem Statement

You are given four integers A, B, C, and D. Find the number of integers between A and B (inclusive) that can be evenly divided by neither C nor D.

Constraints

1\leq A\leq B\leq 10^{18}

1\leq C,D\leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

A B C D

Output

Print the number of integers between A and B (inclusive) that can be evenly divided by neither C nor D.

Sample Input 1

4 9 2 3

Sample Output 1

2

5 and 7 satisfy the condition.

Sample Input 2

10 40 6 8

Sample Output 2

23

Sample Input 3

314159265358979323 846264338327950288 419716939 937510582

Sample Output 3

532105071133627368

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
int main(void)
{

	long long int a, b, r, x, cnt,cnt2,bai, one, two,c,d,tmp;
	
	scanf("%lld%lld%lld%lld", &one, &two, &b, &a);
	c = b;
	d = a;
	x = a * b;
	r = a % b;
	while (r != 0) {
		a = b;
		b = r;
		r = a % b;
	}
	one = one - 1;
	bai = x / b;
	printf("%lld\n", bai);
	cnt = one / bai ;
	cnt2 = two / bai ;
	printf("%lld %lld : %lld %lld\n", two / c, two / d, one / c, one / d);
	tmp=((two / c + two / d) - cnt2) - ((one / c + one / d) - cnt);
	printf("%lld  %lld\n", cnt,cnt2);
	printf("%lld %lld\n", ((two / c + two / d) - cnt2), ((one / c + one / d) - cnt));
	printf("%lld", (two-one)-tmp);
	return 0;
}