CodeForces - 346C- Number Transformation II(贪心+暴力。。)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值