在CSS中我们可以用井号(#)加6位十六进制数表示一种颜色,例如#000000是黑色,#ff0000是红色,#ffd700是金色。
Sample Input
同时也可以将六位颜色#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
我写的ac代码有点过于麻烦.
对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一, 十六进制是逢十六进一, 二进制就是逢二进一,以此类推,x进制就是逢x进位。#include<stdio.h>
#include<string.h>
int main()
{
char q[10000];
int w[10000];
scanf("%s",q);
for(int i = 1 ; i < strlen(q) ; i++)
{
if(q[i] >= '0' && q[i] <= '9')
{
w[i] = q[i] - '0';
}
else if(q[i] == 'a')
{
w[i] = 10;
}
else if(q[i] == 'b')
{
w[i] = 11;
}
else if(q[i] == 'c')
{
w[i] = 12;
}
else if(q[i] == 'd')
{
w[i] = 13;
}
else if(q[i] == 'e')
{
w[i] = 14;
}
else if(q[i] == 'f')
{
w[i] = 15;
}
}
int k1,l1,m1;
int max1 = 9999999,max2 = 9999999,max3 = 9999999;
for(int i = 0 ; i <= 15 ; i++)
{
int k = ((w[1] * 16 + w[2]) - (i * 16 + i)) * ((w[1] * 16 + w[2]) - (i * 16 + i));
if(max1 > k)
{
k1 = i;
max1 = k;
}
int l = ((w[3] * 16 + w[4]) - (i * 16 + i)) * ((w[3] * 16 + w[4]) - (i * 16 + i));
if(max2 > l)
{
l1 = i;
max2 = l;
}
int m = ((w[5] * 16 + w[6]) - (i * 16 + i)) * ((w[5] * 16 + w[6]) - (i * 16 + i));
if(max3 > m)
{
m1 = i;
max3 = m;
}
}
printf("#");
if(k1 <= 9)
{
printf("%d",k1);
}
else
{
if(k1 == 10)
{
printf("a");
}
else if(k1 == 11)
{
printf("b");
}
else if(k1 == 12)
{
printf("c");
}
else if(k1 == 13)
{
printf("d");
}
else if(k1 == 14)
{
printf("e");
}
else if(k1 == 15)
{
printf("f");
}
}
if(l1 <= 9)
{
printf("%d",l1);
}
else
{
if(l1 == 10)
{
printf("a");
}
else if(l1 == 11)
{
printf("b");
}
else if(l1 == 12)
{
printf("c");
}
else if(l1 == 13)
{
printf("d");
}
else if(l1 == 14)
{
printf("e");
}
else if(l1 == 15)
{
printf("f");
}
}
if(m1 <= 9)
{
printf("%d",m1);
}
else
{
if(m1 == 10)
{
printf("a");
}
else if(m1 == 11)
{
printf("b");
}
else if(m1 == 12)
{
printf("c");
}
else if(m1 == 13)
{
printf("d");
}
else if(m1 == 14)
{
printf("e");
}
else if(m1 == 15)
{
printf("f");
}
}
}