题目描述
用三元组(r,g,b)表示RBG颜色值的一种颜色,其中r、g、b分别为该颜色的R 值、G 值、B 值,0≤r,g,b≤255且皆为十进制整数。
对于颜色(r,g,b),定义其反色的 RGB 颜色值为(255-r,255-g,255-b)。
r、g、b常用两位十六进制表示(00~FF)。输入r、g、b的十六进制表示,输出其反色的十六进制颜色码。
例如:白色的RGB值为(255,255,255),其反色为黑色,RGB值为(0,0,0)。255的十六进制为FF。因此输入FF FF FF,输出000000。
输入
三个两位十六进制,分别表示r,g,b颜色值。输入数据保证是合法的颜色值。
输出
三个两位十六进制,分别是反色的r,g,b值
输入样例1
FF FF FF
输出样例1
000000
输入样例2
EB A9 32
输出样例2
1456CD
思路分析
题目没有任何的技巧,纯语法基础题。
C语言的十六进制以%X读进来,大写的是大写的X,小写的是%x。
输出去也是大写的就%X,小写的就%x,位宽要写成%2X,补0要写成X。
C 的十六进制读进来要hex,输出去也要hex,控制大写要写成 setiosflags(ios::uppercase),默认小写输出,位宽要写成setw(2),但是只是有效后一个输出,所以每一个输出前面都要写,补0要写成setfill(‘0’),这个设计一次就可以了,默认补空格。
AC代码 C
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
int main(){
int r,g,b;
scanf("%X%X%X",&r,&g,&b);
printf("XXX",255-r,255-g,255-b);
return 0;
}
AC代码 C
代码语言:javascript复制#include<bits/stdc .h>
using namespace std;
int main(){
int r,g,b;
cin>>hex>>r>>g>>b;
cout<<setiosflags(ios::uppercase)<<setfill('0')<<hex<<setw(2)<<255-r<<setw(2)<<255-g<<setw(2)<<255-b<<endl;
return 0;
}