close
Content

一位來自墨西哥蒙特瑞技術研究學院(ITESM Campus Monterrey)的學生想發表一種新的數值加密演算法。
演算法步驟如下:

1. 讀入一個整數N,N為欲加密的數字:N = 265
2. 將N當作十進位的數值:X1 = 265(decimal)
3. 把X1由十進制轉為二進制:X1 = 100001001(binary)
4. 計算二進制的X1有幾個1:b1 = 3
5. 把N當作十六進位數值:X2 = 265(hexadecimal)
6. 把X2由十六進制轉為二進制:X2 = 1001100101(binary)
7. 計算二進制的X2有幾個1:b2 = 5
8. 最後的編碼為N xor (b1*b2):265 xor (3*5) = 262

這位學生並未通過這次的計算機組識考試,所以他請求校方在ACM的試題上出一題計算共有幾個位元1的題目,好讓他能順利發表他的數值加密演算法。
你必須寫一個程式能讀入一個整數,然後輸出該整數的b1, b2值。

Input

第一行包含一個數字T (0 < T ≤ 1000),代表有幾組測資。
接下來的T行,每行包含一個數字N (decimal)(0 < N ≤ 9999),N代表學生要加密的數字。

Output

對於每組測資,輸出數字b1和b2,b1和b2請用空白分隔。

Sample Input #1
3
265
111
1234
Sample Output #1
3 5
6 3
5 5

python:

from sys  import stdin
s=int(stdin.readline())
for _ in range(s):
    n=stdin.readline().strip()
    x1=bin(int(n,10))
    c1=x1.count('1')
    x2=bin(int(n,16))
    c2=x2.count('1')
    print(c1,c2)

"""
note:
進制轉換 
右上到左下   2进制           8进制               10进制               16进制
2进制	      -             bin(int(n,8))	    bin(int(n,10))	    bin(int(n,16))
8进制	   oct(int(n,2))	    -	            oct(int(n,10))	    oct(int(n,16))
10进制	   int(n,2)	        int(n,8)	            -	            int(n,16)
16进制	   hex(int(n,2))	hex(int(n,8))	    hex(int(n,10))	         -
"""
arrow
arrow
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()