在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
#40e0d0Sample Output
#4dc
#include<stdio.h>
int a[20];
char b[30];
int pin(int i)
{
if(b[i]<97)
return b[i]-48;
else
return b[i]-87;
}
void put(int i)
{
if(i<=9)
{
printf("%c",i+48);
}
else
{
printf("%c",i+87);
}
}
void cha(int pp)
{
for(int i=0;i<16;i++)
{
if(pp==a[i])
{
put(i);
return;
}
else if(pp>a[i]&&pp<a[i+1])
{
if(pp-a[i]<=a[i+1]-pp)
{
put(i);
return;
}
else
{
put(i+1);
return;
}
}
}
}
int main()
{
int pan;
a[0]=0;
for(int i=1;i<16;i++)
{
a[i]=i*16+i;
}
while(~scanf("%s",b))
{
printf("#");
pan=pin(2);
pan+=pin(1)*16;
cha(pan);
pan=pin(4);
pan+=pin(3)*16;
cha(pan);
pan=pin(6);
pan+=pin(5)*16;
cha(pan);
printf("\n");
}
}