#include<iostream>
#include <iomanip>#include<math.h>
#include<string.h>
using namespace std;
char ll[3];
int c16to10(char a,char b)
{
int num;
if(a>='0'&&a<='9')
num=(a-'0')*16;
else
num=(a-'A'+10)*16;
if(b>='0'&&b<='9')
num+=(b-'0');
else
num+=(b-'A'+10);
return num;
}
void c10to16(int num,char ll[3])
{
int m,n;
m=num/16;
n=num%16;
if(m<10)
ll[0]='0'+m;
else
ll[0]='A'+m-10;
if(n<10)
ll[1]='0'+n;
else
ll[1]='A'+n-10;
ll[2]='\0';
}
int main()
{
char a[8];
while(cin>>a)
{
char r[3],g[3],b[3];
c10to16(255-c16to10(a[1],a[2]),r);
c10to16(255-c16to10(a[3],a[4]),g);
c10to16(255-c16to10(a[5],a[6]),b);
cout<<'#'<<r<<g<<b<<endl;
}
return 0;
}
其实还有更简单的方法,,,,,,,
#include<iostream>
#include <iomanip>
#include<math.h>
using namespace std;
char c16toF_16(char a)
{
char m;
if(a<='F'&&a>='A')
m='F'-a+'0';
else if(a<='5'&&a>='0')
m='A'+'5'-a;
else
m='9'-a+'6';
return m;
}
int main()
{
char m[8];
while(cin>>m)
{
cout<<'#';
for(int i=1;m[i];i++)
cout<<c16toF_16(m[i]);
cout<<endl;
}
return 0;
}