造房子的学问

成绩 0 开启时间 2013年02月21日 星期四 18:02
折扣 0.8 折扣时间 2013年02月28日 星期四 18:02
允许迟交 关闭时间 2013年02月28日 星期四 18:02
输入文件 wood.in 输出文件 wood.out

【题目描述】

小木屋看来已被荒置很多年了, Z4 决定首先把它修葺一下,由最健壮的 hongyan 总负责。其余的人各自到岛上去砍伐木材。

一些细微工作结束后, hongyan 决定在木屋中加一条顶梁柱,但是其他人提供的木材长度参差不齐,幸运的是几何功底扎实的他,利用已有的工具造出了一把尺子。

hongyan 首先选取了了一条最好的木材,然后他可以对这条木材作如下几种操作:

1.  接上分别由 jakrinchose ,立方, worm 提供的木材 ( 由于岛上资源丰富 , 这些木材是无限的 ) ,木材的长度会不损耗的增加 。

2. 用尺子在木材上截去该尺子长度的一段,当然 截开后的两段木材依然可以利用 。

3. 把木材对半截断,木材长度变为原来的一半。

另外 jakrinchose 等提供用于拼接的木材由于质量一般(谁说的?! ) ,不能直接使用为顶梁柱。

现在 hongyan 想知道,通过这几种操作,是否能造出需要的长度的顶梁柱(当然他手中的“最好的木材”不能完全被截去,也就是说在操作的过程中不能把“最好的木材”完全扔掉以至长度为 0 ! )假如可以,最少需要多少步工序?

【输入格式】

输入文件 wood.in 有 5 行,第一行两个数 n, m (1<=n,m<=32767) 分别表示该木材原来的长度,和需要的长度 . 第 2 至 4 行各一个数分别是 jakrinchose ,立方, worm 提供用于拼接的木材长度 L1 , L2 , L3(L1 , L2 , L3<=32767),最后一行也是一个数,表示尺子的长度 L(L<n) 。( ZaZa 是喜欢整数的人,所以所有的数据是整数,同时,对半截断的木材多出来的非整数部分,将作为多余的成分删去,也就是该操作后,木材的长度可以用 div 2 来运算;同时,任何时候,木材长度都不应大于 32767 )。

【输出格式】

输出文件 wood.out 仅一行,假如不能造出需要的长度,则输出“No solution.”。否则输出最少需要的工序数。

【样例输入】

100 81
10
24
40
1

【样例输出】

3

【提示】

(样例注解:3的结果是截出1,再加上两次40)