给定一个正整数N
,输出整数对的数量,0 <= a <= b < 2**N
使a*b >= 2**N
。
规则
- 您可以假定该
N
值小于或等于您语言中整数的最大位宽(例如,对于C,N
不超过32
或64
,具体取决于计算机的体系结构)。如果您的语言能够处理任意宽度的整数,则没有上限N
。
测试用例
1 0
2 3
3 19
4 96
5 437
6 1876
7 7804
8 31904
9 129170
10 520135
11 2088143
12 8369175
13 33512744
14 134128704
15 536681553
16 2147082274
注意:我正在努力生成更大的测试用例。我的暴力手段确实很慢。
—
Mego
@ user202729您正在通过不遵循
—
Mego
a <= b
条件来复制一些对。
一些更多的测试用例:
—
user202729
{0, 3, 19, 96, 437, 1876, 7804, 31904, 129170, 520135, 2088143, 8369175, 33512744, 134128704, 536681553, 2147082274, 8589086503, 34357951447}
密切相关:en.wikipedia.org/wiki/Divisor_summatory_function。没有已知的封闭形式。
—
Orlp