还有这个题
链接:https://ac.nowcoder.com/acm/evaluate/5032/A
来源:牛客网
题目描述
牛牛喜欢玩游戏,今天他买了一个新游戏。在游戏开始的时候,屏幕上出现一个大小为S的史莱姆。
牛牛手里有一把剑,这把剑一次可以将一个大小为z的史莱姆砍成两个大小为x和y的史莱姆,其中x+y=z,其中x,y,z必须是都是正整数,所以z一定是大于1的。
每次将史莱姆砍成x和y两半的时候,牛牛可以获得x*y个金币,现在他想知道他最少砍多少次可以获得至少M个金币。如果他无法完成,则返回-1.
输入描述:
输入包括两行。
第一行输入正整数S,表示最初史莱姆的大小。
第一行输入正整数M,表示需要获得的最少金币数。
输出描述:
输出一个整数表示最少砍多少次可以获得M个金币,如果他无法完成,则返回-1.
示例1
输入
3
2
输出
1
说明
有一个大小为3的史莱姆,牛牛需要获得2个金币。所以牛牛只需要将史莱姆砍成两个大小分别是1和2的史莱姆,就可以获得2个金币了。
示例2
输入
3
3
输出
2
说明
最初状态和第一个样例一样,但牛牛需要获得3个金币。
牛牛将史莱姆分成大小1和2的两个史莱姆,获得两个金币,其中大小为1的史莱姆不能继续分割了,所以他需要将大小为2的史莱姆砍成大小1和1的史莱姆,获得一个金币,总共获得三个金币。
示例3
输入
3
4
输出
-1
说明
在样例2中将大小为3的史莱姆砍成三个大小为1的史莱姆获得了三个金币,不能再继续分割史莱姆获得金币。
示例4
输入
765
271828
输出
14
备注:
\(2\leq S\leq 1000\)
\(1\leq M \leq 1000000000\)
我就是我不一样的验货