ETH官方钱包

切換
舊版
前往
大廳
主題

ZeroJudge - e545: 10019 - Funny Encryption Method 解題心得

Not In My Back Yard | 2019-11-27 19:22:57 | 巴幣 0 | 人氣 439

題目連結(jié):


題目大意:
給定一正整數(shù) T (0 < T ≦ 1000),代表有 T 筆測試資料。每筆測資佔一列輸入。每列給定一個正整數(shù) N (0 < N ≦ 9999),代表要加密的數(shù)字。

加密的方法為:
將 N 當作一個十進位數(shù)字 X1 ,並數(shù) X1 在二進位制下有多少位元為 1 (此數(shù)量為 b1);再來將 N 當作一個十六進位數(shù)字 X2 ,並數(shù) X2 在二進位制下有多少位元為 1 (此數(shù)量稱作 b2)。

最後的加密結(jié)果為 N XOR (b1 × b2) 。

但是本題不是輸出加密結(jié)果,而是輸出 b1 、 b2 的值。



範例輸入:
3
265
111
1234


範例輸出:
3 5
6 3
5 5


解題思維:
要把一個原本為十進位當作十六進位,只需要思考其數(shù)值意義即可得知。

例如 276 = 2 × 10 ^ 2 + 7 × 10 ^ 1 + 6 × 10 ^ 0 ,將其中的「10」換成「16」即可將原本的數(shù)字視作十六進位。

接著數(shù)一個數(shù)字有多少位元為 1 ,只需善用右移位元運算以及 & 運算子即可。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。
追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

更多創(chuàng)作