给定一个整数,您必须找到将N反转为平方数所需的最小位数。只允许将最高有效位以下的位取反。
例子
- 已经是一个平方数( 2 2),因此预期输出为 0。
- 可通过将1位取反来变成一个平方数: 11000 → 1100 1( 25 = 5 2),因此预期输出为 1。
- 通过反转的单个位不能被转变成平方数(可能的结果是 23, 20, 18和 30),但它可以通过反转2位来实现: 10110 → 10 0 0 0( 16 = 4 2) ,因此预期输出为 2。
规则
- 如果您的代码太慢或在较大的测试用例中引发错误,也可以,但是它应该至少在不到1分钟的时间内支持。
- 这是代码高尔夫球!
测试用例
Input | Output
----------+--------
4 | 0
22 | 2
24 | 1
30 | 3
94 | 4
831 | 5
832 | 1
1055 | 4
6495 | 6
9999 | 4
40063 | 6
247614 | 7 (smallest N for which the answer is 7)
1049310 | 7 (clear them all!)
7361278 | 8 (smallest N for which the answer is 8)
100048606 | 8 (a bigger "8")
或采用复制/粘贴友好格式:
[4,22,24,30,94,831,832,1055,6495,9999,40063,247614,1049310,7361278,100048606]
100048606
在TIO上执行,这是一个问题吗?