加密2-华东师范-2020
| 加密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
1
hint:十六進制輸出時請使用大寫字母(A,B...)
解題思路:
1、? 必須知道按位異或的特點:異或運算的特點如果 a^b=c,那么就有 c^b = a以及c^a=b此規律可以用來進行最簡單的加密和解密.
2、? 倒著求解即可。
?
程序代碼:
#include<stdio.h>
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;???????????????
}
?
?
轉載于:https://www.cnblogs.com/zhouhongweihpu/p/3230073.html
總結
以上是生活随笔為你收集整理的加密2-华东师范-2020的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ecos代码分析(1)
- 下一篇: Tomcat源码分析(十)--部署器 转