洛谷 P7106 双生独白

洛谷 P7106 双生独白

洛谷传送门

题目背景

我喜欢安静,你热爱喧闹;我忠于温暖,你酷爱凉爽。

如果任何事物都有反面,那拼接这个世界的颜色呢?

只有白与黑吗?

题目描述

为了形式化地描述颜色,我们引入 RGB 颜色值,用三元组 (r,g,b)(r,g,b) 表示一种颜色,其中 r,g,br,g,b 分别为该颜色的 R 值G 值B 值,满足 0 \le r,g,b \le 2550≤r,g,b≤255 且皆为十进制整数

显然,这套颜色系统一共可以表示 256 \times 256 \times 256 = 16,777,216256×256×256=16777216 种不同的颜色。对于颜色 (r,g,b)(r,g,b),定义其反色的 RGB 颜色值为 (255-r,255-g,255-b)(255−r,255−g,255−b)。

然而人们发现,单纯地使用 RGB 颜色值很不方便,复制颜色时要复制三个值。

于是诞生了十六进制颜色码,即形如 #EBA932 长度为 77 的字符串。具体而言:

  • 字符串的第一位是 #,为颜色码标识符。
  • 字符串的第二、三位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 R 值。
  • 字符串的第四、五位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 G 值。
  • 字符串的第六、七位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 B 值。

十六进制数码从小到大包含 0123456789ABCDEF,注意 ABCDEF 均为大写

现在你收到了一组十六进制颜色码,请你输出其反色的十六进制颜色码。

提示:颜色的 RGB 值与十六进制码之间可以相互转换(参考样例解释 #2)

输入格式

一行,输入长度为 77 的字符串,表示原色的十六进制颜色码。

输出格式

一行,输出长度为 77 的字符串,表示反色的十六进制颜色码。


题解:

月赛签到题。

其实相当于FF和给出十六进制数做减法,直接上去就开模拟。

我切的时候考场有26个人切,手速还是慢。

转眼就300多人切了。预估红题,不知道具体是什么题。

代码:

#include<cstdio>
using namespace std;
char s[10];
int a[10];
int main()
{
    scanf("%s",s);
    for(int i=1;i<=6;i++)
    {
        if(s[i]>='A'&&s[i]<='F')
            a[i]=s[i]-'A'+10;
        else
            a[i]=s[i]-'0';
    }
    int r,g,b;
    for(int i=1;i<=6;i++)
        a[i]=15-a[i];
    printf("#");
    for(int i=1;i<=6;i++)
    {
        if(a[i]<=9)
            printf("%d",a[i]);
        else
        {
            a[i]-=10;
            printf("%c",'A'+a[i]);
        }
    }
    return 0;
}
posted @ 2020-11-28 17:21  Seaway-Fu  阅读(266)  评论(0编辑  收藏  举报