倍集
题号:NC21335
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

S1 和 S2是两个整数的集合,如果S1里面的每一个数x都存在一个S2里面的y是x的倍数
那么我们称S2是S1的倍集
给你四个整数A,B,C,D
有一个集合S包含所有的x满足 A <= x <= B  C <= x <= D
求出S的一个元素最少的子集T,使得T是S的倍集
你只需要输出T的元素的个数即可

输入描述:

输入一行包含四个整数A,B,C,D 
1 ≤ A ≤ 1010
A ≤ B ≤ 1010
B + 1 ≤ C ≤ 1010
C ≤ D ≤ 1010

输出描述:

输出一个整数
示例1

输入

复制
1 1 2 2

输出

复制
1
示例2

输入

复制
1 2 3 4

输出

复制
2
示例3

输入

复制
2 3 5 7

输出

复制
3
示例4

输入

复制
1 10 100 1000

输出

复制
500
示例5

输入

复制
1000000000 2000000000 9000000000 10000000000

输出

复制
1254365078