#41553: 其實挺簡單的


seancai78@gmail.com (風月春秋)

學校 : 臺北市立成功高級中學
編號 : 176406
來源 : [140.113.124.212]
最後登入時間 :
2024-10-07 23:20:19
e284. 放暑假了!!!!! -- π | From: [118.166.28.17] | 發表日期 : 2024-08-05 23:26

這題提供幾個做法

作法一:
懶人作法(本人)
scanf輸入
輸出(__builtin_popcount(a)==1)?"Yes":"No"
__builtin_popcount(a) 為一個內建函式,可以計算一個數裡面的bit數量
1 = 1(1); 2 = 01(1); 3 = 11(2)

作法二:出自友好的討論區大老
建表
int = 2^31-1
table[i | i<=31] =
{i==0 => 1;
else table[i-1]<<1;
}
比較快的建表法

作法三:一般的位元運算法
輸入a
count 紀錄個數
while(a && count < 2)
count += a&2;
a>>1

 
ZeroJudge Forum