Day1 位運算與快速冪 A 最低位

2021-09-25 10:11:00 字數 875 閱讀 8596

題目**:

link

題目翻譯:

給定乙個正整數a(1<=a<=100),輸出a的最低位。

例如,給定a=26,我們可以將二進位制形式的a寫為11010,所以a的最低位是10,所以輸出應該是2。

另乙個例子是這樣的:給定a=88,我們可以用二進位制形式把a寫為1011000,所以a的最低位是1000,所以輸出應該是8。

輸入每行輸入僅包含乙個整數a(1<=a<=100)。包含「0」的行表示輸入結束,而此行不是輸入資料的一部分。

輸出對於輸入中的每個a,輸出僅包含其最低位的行。

題意:將十進位制寫成二進位制,然後輸出二進位制的最低位

26(10)=11010(2) 輸出:2(2的一次方);

88(10)=1011000(2) 輸出:8(2的三次方);

(最低位:倒著*2 直到第乙個1的時候截止)

思路:發現用二進位制表示時,最低為的二進位制形式為1+若干個0,可以用快速冪轉化為十進位制;

所以接下來判斷最低位的二進位制有t個0,結果輸出2的t次方;用t計數,"與"運算&判斷a二進位制形式最後一位是否為0,「右移」 >>a 一直到遇見1結束;

**

#include #define ll long long  //重新命名 long long

using namespace std;

ll quickpow(ll x, ll n) //快速冪模版(俺也理解不太深刻)

return res;

}int main()

cout << quickpow(2,t) << endl;

}return 0;

}

Day1 位運算與快速冪 C 麥哲倫的異或

題目 link 題目翻譯 mzl非常喜歡xor,現在他得到了陣列a,a的長度是n,他想知道所有的xor a i a j 1 i,j n 陣列b的xor定義為b1 xor b2 xor bn 輸入多個測試用例,第一行包含乙個整數t 不超過20 表示用例數。每個測試用例包含四個整數 n m z l a1...

快速冪模版與位運算

powered by ab in 局外人 include typedef long long ll using namespace std const ll maxn 5e6 10 char buf 1 21 p1 buf,p2 buf inline ll getc inline ll read w...

基於位運算的快速冪與取餘運算

附上原題 題目描述 輸入b,p,k的值,求bp mod k的值。其中b,p,k為長整型數。輸入格式三個整數b,p,k.輸出格式輸出 bp mod k s s為運算結果 輸入輸出樣例 輸入 2 10 9 輸出 210 mod 9 7 該題需使用快速冪,以下是快速冪的方法 乙個數,例如 15 10 11...