奇技淫巧 快速求log2 x

2022-05-10 22:45:09 字數 739 閱讀 1315

很多倍增的板子都需要算log,比如說lca,rmq,等等(其實我只知道這兩個倍增,唉太菜了)

然後計算log有乙個math的標頭檔案,裡面的log函式就是求出log10(x),於是求log2(x)就相當於log(x)/log(2)

但是這樣算很容易出玄學bug,因為算出來可能是取整×取整,然後就炸了

然後可以自己手打乙個log,**一般都是這樣的:

int log(int

x)

return

cnt; }//

-1表示錯誤(log0)

這個已經很快了,(吧),但是還是有很大的常數。

一般來說可以預處理出所有log,開乙個陣列,不停的×2×2然後全部預處理出來,以後用的時候查陣列就可以了。

接下來重點來了!發放福利!

今天突然想到了這個問題,然後喜大普奔地找到了個奇技淫巧的**:

int log(int

n)

if(n&0x0000ff00)

if(n&0x000000f0)

if(n&0x0000000c)

if(n&0x00000002)

return

result;

}

git 奇技淫巧

例如 1.0.0 git tag a 1.0.0 m 1.0.0 版本的備註資訊.複製 git push origin tags 複製 例如 1.0.0 git tag d 1.0.0 複製 刪除遠端標籤需要先刪除本地標籤,再執行下面的命令 git push origin refs tags 1.0...

C 之奇技淫巧

typedef struct data 0 pdata 0 typedef struct data 1 pdata 1 結構體data 0與data 1在性質上沒有什麼不同,它們的size是相等的,都是8.但在用法上有很大區別。例 pdata 0 stack0 pdata 0 malloc max ...

c 的奇技淫巧

關於陣列 數論演算法技巧 stl其他 while scanf d d n,m eof 等價於 while scanf d d n,m 2 前者eof為檔案結束符,較保險 後者 後的數字為輸入的變數的個數 不能只寫while scanf d d n,m 這樣無法結束讀入 wwq大佬教的,希望我不要和他...