疯狂的数学家拥有大量的数字,因此他留下的空间非常有限。为了节省一些钱,他必须折叠整数,但是不幸的是他确实很懒。如果您想帮助他,您的任务是创建一个函数/程序,该函数可以折叠一个给定的正整数以表示我们的数字疯子。
如何折叠整数?
如果可以用位数之和均匀除以它,请用位数之和除。如果不满足该要求,则将其余数除以位数之和。重复该过程,直到达到结果1
。折叠后的整数是您必须执行的操作数。让我们举个例子(例如1782
):
获取其数字的总和:
1 + 7 + 8 + 2 = 18
。1782
被整除18
,所以下一个数字是1782 / 18 = 99
。99
不能被整除9 + 9 = 18
,因此我们取余数:99 % 18 = 9
。9
显然可以被整除9
,因此我们将其除以并得到1
。
结果是3
,因为要达到,需要3个操作1
。
规则和规格
某些整数可能具有等于的数字总和
1
,例如10
或100
。您的程序无需处理此类情况。也就是说,您可以确保输入的整数不具有等于的数字总和1
,并且使用给定整数进行的任何运算都不会导致数字的总和为1
(1
本身除外,即“目标”)。例如,您将永远不会收到10
或20
作为输入。输入将是一个大于的正整数
1
。默认漏洞适用。
您可以采用任何标准均值进行输入并提供输出。
测试用例
输入->输出 2-> 1 5-> 1 9-> 1 18-> 2 72-> 2 152790-> 2 152-> 3 666-> 3 777-> 3 2010-> 3 898786854-> 4
这是一个程序,可让您可视化过程并尝试更多的测试用例。
这是代码高尔夫球,因此每种语言中最短的代码(以字节计)将获胜!
8987868546
是有效输入,但它会破坏您的测试工具以及许多(如果不是全部)答案……
898786854
,不是8987868546
(您6
在末尾添加了)
8987868546
不为1(符合规则1),并且8987868546
是大于1的正整数(符合规则2)。