loga(b)问题

mac2022-06-30  23

换底公式

但是这样得话,由于计算机double处理会缺少精度 ex:

int a=2,b=8; (int)log(b)/log(a)!=3,而是等于2;这里得问题就是精度得缺少 解决方案(int)(log(b)/log(a)+0.5),这里用四舍五入得方法保证绝大多数正确答案 优点O(1)时间复杂度

这样的方法我提交CF的代码,也过了,但是目前自己无法证明这个公式绝对正确,但是CF过了,就能保证的是绝大数数据没问题。

暴力算法

int log(int a,int b) { int sum=0; while(b/a) { b/=a; sum++: } return sum; } 优点:保证答案的正确性 缺点:O(loga(b))时间复杂度
最新回复(0)