HihoCoder -#1700 : 相似颜色

1 篇文章 0 订阅
时间限制: 10000ms
单点时限: 1000ms
内存限制: 256MB

描述

在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


数学解法:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,c,d;
    getchar();
    scanf("%x",&d);
    c=d%256;
    b=d/256%256;
    a=d/256/256;

    int x,y,z;
    x=(a-a/17*17)<((a/17+1)*17-a)?(a/17):(a/17+1);
    y=(b-b/17*17)<((b/17+1)*17-b)?(b/17):(b/17+1);
    z=(c-c/17*17)<((c/17+1)*17-c)?(c/17):(c/17+1);
    printf("#%x%x%x\n",x,y,z);

    return 0;
}

库函数写法:

fgets的用法       sscanf的用法

#include<bits/stdc++.h>
using namespace std;
int main(){
    char s[3],l[3],e[3];
    getchar();
    fgets(s,3,stdin);
    fgets(l,3,stdin);
    fgets(e,3,stdin);

    int a,b,c,d;
    sscanf(s,"%x",&a);
    sscanf(l,"%x",&b);
    sscanf(e,"%x",&c);

    int x,y,z;
    x=(a-a/17*17)<((a/17+1)*17-a)?(a/17):(a/17+1);
    y=(b-b/17*17)<((b/17+1)*17-b)?(b/17):(b/17+1);
    z=(c-c/17*17)<((c/17+1)*17-c)?(c/17):(c/17+1);
    printf("#%x%x%x\n",x,y,z);

    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值