CodeForces - 346C- Number Transformation II
You are given a sequence of positive integers x1, x2, …, xn and two non-negative integers a and b. Your task is to transform a into b. To do that, you can perform the following moves:
subtract 1 from the current a;
subtract a mod xi (1 ≤ i ≤ n) from the current a.
Operation a mod xi means taking the remainder after division of number a by number xi.
Now you want to know the minimum number of moves needed to transform a into b.
Input
The first line contains a single integer n (1 ≤ n ≤ 105). The second line contains n space-separated integers x1, x2, …, xn (2 ≤ xi ≤ 109). The third line contains two integers a and b (0 ≤ b ≤ a ≤ 109, a - b ≤ 106).
Output
Print a single integer — the required minimum number of moves needed to transform number a into number b.
Examples
Input
3
3 4 5
30 17
Output
6
Input
3
5 6 7
1000 200
Output
206
- 题目大意:
给你两个数a,b(a>b)还有一个数组c[]。问最少经过多少步可以让a变成b。每一步可以进行两种操作中的一种 1.a-1 2.a-a%c[i] - 解题思路;
每次找能减的最大的数,贪心的思想,一直到减到a==b为止。
先把c数组排序,每次找能减的最大的数
for(int i=n-1;i>=0;i--)//找一个减的最多的
{
if(a-a%c[i]>=b)
tmp=min(tmp,a