在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。

输入

#abcdef

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

输出

距离输入颜色最近的#rgb

样例输入
#40e0d0
样例输出
#4dc

1 , 将十进制的字符转换为数字

2 ,求该式最小值即求每个单式的最小值

3 ,将(1 , 1) (2 , 2)。。。。(e , e)(f , f)的值存到一个数组里 , 再遍历一遍 , 求公式的最小值

下为代码:

#include <stdio.h>
#include <iostream>
using namespace std;
char hunter[16] = {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' ,'c' , 'd' , 'e' , 'f'};
int fun(char ch)
{
	if(ch >= '0' && ch <= '9')return (ch - '0');
	if(ch >= 'a' && ch <= 'f')return (ch - 'a' + 10);
}
int main()
{
	char aa[7];
	int ans = 0;
	int bb[20]  , dd[20] , cc[20];
	cin >> aa;
	for(int i = 0 ; i < 16 ; i++)
	{
		bb[i] = 16 * fun(hunter[i]) + fun(hunter[i]);
	}
	 cc[ans++] = 16 * fun(aa[1]) + fun(aa[2]);
	 cc[ans++] = 16 * fun(aa[3]) + fun(aa[4]);
	 cc[ans++] = 16 * fun(aa[5]) + fun(aa[6]);
	for(int i = 0 ; i < 3 ; i++)
	{
		int min = 99999;
		for(int j = 0 ; j < 16 ; j++)
		{
			if(min > (cc[i] - bb[j]) * (cc[i] - bb[j]))
			{
				min = (cc[i] - bb[j]) * (cc[i] - bb[j]);
				dd[i] = j;
			}
			
		}
	}
	cout << "#" ;
	for(int i = 0 ; i < 3 ; i++)
	{
		cout << hunter[dd[i]];
	}
	cout << endl;
	return 0;
 }