洛谷 P1100 高低位交換 的兩種解法

2021-10-19 09:37:42 字數 1092 閱讀 2742

給出乙個小於2

322^

232 的正整數。這個數可以用乙個32位的二進位制數表示(不足32位用0補足)。我們稱這個二進位制數的前16位為「高位」,後16位為「低位」。將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少(用十進位制表示)。

例如,數1314520用二進位制表示為0000 0000 0001 0100 0000 1110 1101 1000(新增了1111個前導00補足為3232位),其中前1616位為高位,即0000 0000 0001 0100;後1616位為低位,即0000 1110 1101 1000。將它的高低位進行交換,我們得到了乙個新的二進位制數0000 1110 1101 1000 0000 0000 0001 0100。它即是十進位制的249036820249036820。

輸入格式

乙個小於2

322^

232 的正整數

輸出格式

將新的數輸出

輸入輸出樣例

輸入

1314520
輸出

249036820
#include

using

namespace std;

intmain()

此**使用了位運算,將前16位向後移,後16位向前移

注意!**中的unsigned int不能少,要不然232的數int裝不下!如果用int,只能70分。寫**要仔細,有時候程式只和ac差乙個字。

這是我跟乙個紅名大佬copy過來的,我只想出了位運算解法

#include

using

namespace std;

intmain()

else

} a/=2

; x++;}

cout<

return0;

}

洛谷 P1100 高低位交換

p1100 高低位交換 include include define ll long long 定價代換ll 代替long long void sw int a,int b 自定義數值交換函式 void fun ll n ll sum 0 int x 32 int k 0 while n n一直對2...

洛谷 P1100 高低位交換

給出乙個小於 2 的正整數。這個數可以用乙個 32 位的二進位制數表示 不足 32 位用 0 補足 我們稱這個二進位制數的前 16 位為 高位 後 16 位為 低位 將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少 用十進位制表示 例如,數 1314520 用二進位制表示為 0000 ...

P1100 高低位交換

給出乙個小於2 232的正整數。這個數可以用乙個3232位的二進位制數表示 不足3232位用00補足 我們稱這個二進位制數的前1616位為 高位 後1616位為 低位 將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少 用十進位制表示 例如,數13145201314520用二進位制表示為...