如果您选择接受它,那么您面临的挑战是,给定整数K >= 1
,找到非负整数,A
并且B
使以下两个条件中的至少一个成立:
K = 2^A + 2^B
K = 2^A - 2^B
如果不存在A
和B
,则您的程序可能会以任何方式运行。(为了澄清,A
并且B
可以相等。)
测试用例
一个数字通常有多种解决方案,但是这里有一些:
K => A, B
1 => 1, 0
15 => 4, 0 ; 16 - 1 = 15
16 => 5, 4 ; 32 - 16 = 16; also 3, 3: 8 + 8 = 16
40 => 5, 3 ; 2^5 + 2^3 = 40
264 => 8, 3
17179867136 => 34, 11 ; 17179869184 - 2048 = 17179867136
在任何相对较新的计算机上17179867136
,最后一个测试用例必须在10秒内运行。这是一个代码高尔夫,所以最短的程序以字节为单位。您可以使用完整的程序或功能。
16
,对于5,4
和3,3
都有效。
A
,B
可以否定吗?(例如-1, -1
1)