15059 - This is the REAL Tech-Art   

Description

 

國立清X大學藝X學院學士班的某位助教,最近正在修習計算機結構。

某天,他盯著滿頁的記憶體位址:

0xFFFFFFFF

看著看著,突然覺得哪裡不太對勁……

這不是很像色票嗎?

一查才發現,在 32-bit 系統中,記憶體位址可以使用 8 位十六進位數表示;而加入透明度(Alpha)的 RGBA 色碼 #RRGGBBAA,也正好可以使用 8 位十六進位數表示!

例如:

#FFFFFFFF

可以拆成:

FF FF FF FF

R  G  B  A

分別代表紅色(R)、綠色(G)、藍色(B)與透明度(A),數值範圍從 00 到 FF,分別對應十進位的 0 到 255。

助教頓時覺得計算機結構親切了起來。

於是,他決定把這份感動分享給所有修習計算機程式設計的同學。

十六進位使用以下 16 個符號表示數值:

0 1 2 3 4 5 6 7 8 9 A B C D E F

其中:

  • A = 10

  • B = 11

  • C = 12

  • D = 13

  • E = 14

  • F = 15

一個 RGBA 色碼可以表示為:

#RRGGBBAA

每一個色彩通道皆由 2 位十六進位數字組成。

假設其中一個通道的兩位十六進位數字分別為 x 與 y,則其十進位數值可以使用以下公式計算:x × 161 + y × 160 

也就是:x × 16 + y

Hint: 161 = 16,  160 = 1

 

例如,十六進位的 FF 中,F 所代表的數值為 15:

15 × 16 +15 = 240 + 15 = 255 

因此:

  • #FFFFFFFF

所代表的 RGBA 數值為:

  • R = 255

  • G = 255

  • B = 255

  • A = 255

再例如,給定色碼:

#0232202A

可以拆成:

02 32 20 2A

R  G  B  A

各通道分別計算為:

  • R = 0 × 16 + 2 = 2 

  • G = 3 × 16 + 2 = 50 

  • B = 2 × 16 + 0 = 32

  • A = 2 × 16 + 10 = 42 

因此,此色碼所代表的 RGBA 數值為:

  • R = 2

  • G = 50

  • B = 32

  • A = 42

現在給定一組 RGBA 十六進位色碼 s,請將其中的 R、G、B、A 四個通道分別轉換成十進位數值。

 

Input

輸入一行,包含一組 RGBA 色碼:

s

s 的格式固定為:

#RRGGBBAA

 

其中:

  • 第一個字元固定為 #。

  • 後面共有 8 個十六進位字元。

  • 每個十六進位字元皆為 0 到 9 或 A 到 F。

  • 本題輸入的英文字母皆為大寫。

Output

輸出一行,依序輸出 R、G、B、A 四個通道轉換後的十進位數值,數字之間以一個空白分隔。

請務必在輸出結果後加上換行字元 \n。

 

例如:

255 255 255 255

 

Note

  1. 十六進位中的 A、B、C、D、E、F 分別代表十進位的 10、11、12、13、14、15。

  2. 每兩個十六進位字元代表一個色彩通道:#RRGGBBAA

  3. 若兩位十六進位數字的數值分別為 x 與 y,則其十進位數值為:x × 161 + y × 160 

  4. 可以將色碼以 char array 儲存,再分別讀取對應位置的字元。

  5. 若字元 c 介於 '0' 到 '9',可以使用:c - '0' 取得其數值。

  6. 若字元 c 介於 'A' 到 'F',可以使用:c - 'A' + 10 取得其數值。

  7. 不需要使用任何內建的進位轉換函式。

Sample Input  Download

Sample Output  Download




Discuss