#24265: 解題方法


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [140.114.217.8]
最後登入時間 :
2024-04-13 22:06:23
e284. 放暑假了!!!!! -- π | From: [61.230.43.57] | 發表日期 : 2021-02-01 16:29

有兩種方法

方法一:因為二是二的次方,所以轉成二進位後1的數量只有一個,對每個位置逐一比對檢查1的總數量

方法二:可以從二的次方觀察規律,2(10)、4(100)、16(1000)、64(100000)。如果n是二的次方,n-1就會像是3(11)、7(111)、15(1111)。所以只要拿n和(n-1)去做位元運算&(and)結果為0,n就是二的次方。唯一的例外就是0。所以判別法就是(n&&!(n&(n-1))) = 1(是二的次方),0(不是二的次方)

 
ZeroJudge Forum