总结:
1、二分查找的写法:函数指针,查找上界,查找值;
int binary_search(int (*func)(int), int n, int x)
int1 binary_search(int1 (*func)(int1), int1 n, int1 x) {
int1 head = 1, tail = n, mid;
while (head <= tail) {
mid = (head + tail) >> 1;
if (func(mid) == x) return mid;
if (func(mid) < x) head = mid + 1;
else tail = mid - 1;
}
return 0;
}
就是,第一个,差值为五边形数的一对五边形数
也可以解方程Pk - Pj = Pn
枚举到多少才能得到答案呢?可以找到这样一个枚举上界;
如何判断当前得到的和值或者差值,是五边形数?
方法一、如果我生成一个五边形数字的表, 把他放进去即可;那这个表需要设计成多大呢?
方法二、二分查找(算法时间复杂度O(logN);不仅可以用来在数组中查找元素,还可以用来求解单调函数的解。