其实二分法不仅仅用来查找元素
有很多用途
譬如来求sqrt(2)的近似值
求近似值其实就是这样一个问题的特例:
给定一个定义在[L,R]上的单调函数f(x),求方程f(x)=0的跟
还有快速幂的应用
LL pd(LL a,LL b,LL m)
{
if(b==0)
return 1;
if(b%2==1)
return a*pd(a,b-1,m)%m;
else
{
LL mul=pd(a,b/2,m);
return mul*mul%100;
}
}
同时,条件if(b%2==1)可以用if(b&1)代替
因为b&1进行位与操作
判断b的末位是否为1
因此当b为奇数时返回1
快速幂的迭代方法:
LL pd(LL a,LL b,LL m)
{
LL ans=1;
while(b>0)
{
if(b&1)
{
ans=ans*a%m;
}
a=a*a%m;
b>>=1//b/2
}
return ans;
}
知识点来自于算法笔记