C-C相似颜色




在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000是红色,#ffd700是金色。  

同时也可以将六位颜色#RRGGBB简写为#RGB三位颜色。例如#000与#000000是相同的,#f00与#ff0000是相同的,#639与#663399是相同的。  

对于两个颜色#abcdef和#ghijkl,我们定义其距离是(ab - gh)2 + (cd - ij)2 + (ef - kl)2。(其中ab, cd, ef, gh, ij, kl都是十六进制数,也即0~255的整数)    

给定一个六位颜色#abcdef,请你求出距离它最近的三位颜色#rgb。

Input

#abcdef

其中abcdef是'0'-'9'或'a'-'f'。

Output

距离输入颜色最近的#rgb

Sample Input
#40e0d0
Sample Output
#4dc
1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 
 6 using namespace std;
 7 
 8 const char Hex[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f};
 9 
10 int transform(char ch){
11     if(ch >= 0 && ch <= 9)return ch-0;
12     if(ch >= a && ch <= f)return ch-a+10;
13 }
14 
15 int main()
16 {
17     string str;
18     while(cin>>str){
19         int a = 16*transform(str[1])+transform(str[2]);
20         int b = 16*transform(str[3])+transform(str[4]);
21         int c = 16*transform(str[5])+transform(str[6]);
22         int aa = a / 17;
23         if(a-17*aa > 17*aa+17-a)aa += 1;
24         int bb = b / 17;
25         if(b-17*bb > 17*bb+17-b)bb += 1;
26         int cc = c / 17;
27         if(c-17*cc > 17*cc+17-c)cc += 1;
28         if(aa>=16)aa = 15;
29         if(bb >= 16) bb = 15;
30         if(cc >= 16) cc = 15;
31         cout<<"#"<endl;
32     }
33 
34     return 0;
35 }

你可能感兴趣的:(C-C相似颜色)