加密2
time limit:1000ms memory limit:30000kb
total submit:145 accepted:83
description
對乙個整數(32位無符號整數)進行規則如下的加密:
1. 低16位和高16位互換
2. 此時的低16位按位取反
3. 此時的高16位與低16位進行異或運算,結果儲存到高16位
現在根據加密後的整數,求出加密前的整數的16進製制形式.
input
輸入有多case,每個case一行,且只有乙個整數
output
對於每個case輸出乙個整數(16進製制形式),即加密前的整數。
sample input
4294901759
sample output
1hint:十六進製制輸出時請使用大寫字母(a,b...)
解題思路:
1、 必須知道按位異或的特點:異或運算的特點如果 a^b=c,那麼就有 c^b = a以及c^a=b此規律可以用來進行最簡單的加密和解密.
2、 倒著求解即可。
程式**:
#include
int main()
unsigned int n,a,b,i,j,k;
while(scanf("%d",&n)!=eof)
a=n>>16; //交換後的異或高16位
b=n<<16; // 需要注意的是 每次參與運算的只有16位,所以取完數,在移回來。
b=b>>16; //交換後的低16位
k=a^b; // 交換後的高16位
b=~b; // 交換後,按位取反前的 低16位
b=b<<16; // 低 16 位變成高16位
n=b+k; // 相加即可
printf("%x\n",n);
return 0;
加密2 華東師範 2020
加密2 time limit 1000ms memory limit 30000kb total submit 145 accepted 83 description 對乙個整數 32位無符號整數 進行規則如下的加密 1.低16位和高16位互換 2.此時的低16位按位取反 3.此時的高16位與低16...
華東師範大學2020 加密2
加密2 time limit 1000ms memory limit 30000kb total submit 179 accepted 103 description 對乙個整數 32位無符號整數 進行規則如下的加密 1.低16位和高16位互換 2.此時的低16位按位取反 3.此時的高16位與低1...
華東師範大學2020機試題解
1.統計卡牌的值 2.求30的倍數 include include include include include using namespace std const int maxn 1000 10 int arr maxn bool compare char x,char y intmain i...