【洛谷 11 月月赛 II div.2】【模拟】双生独白

传送门

题目背景

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

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

只有白与黑吗?

题目描述

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

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

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

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

字符串的第一位是 #,为颜色码标识符。
字符串的第二、三位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 R 值。
字符串的第四、五位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 G 值。
字符串的第六、七位是十六进制数码,拼成的十六进制数等于十进制下所示颜色的 B 值。
十六进制数码从小到大包含 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,注意 A,B,C,D,E,F 均为大写。

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

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

输入格式

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

输出格式

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

输入输出样例
输入 #1
#FFFFFF
输出 #1
#000000
输入 #2
#EBA932
输出 #2复制
#1456CD
说明/提示
【样例解释 #1】

转换后原色的 RGB 值为 ( 255 , 255 , 255 ) (255,255,255) (255,255,255),反色的 RGB 值为 ( 0 , 0 , 0 ) (0,0,0) (0,0,0),对应十六进制码 #000000。

【样例解释 #2】

转换后原色的 RGB 值为 ( 235 , 169 , 50 ) (235,169,50) (235,169,50),反色的 RGB 值为 ( 20 , 86 , 205 ) (20,86,205) (20,86,205),对应十六进制码 #1456CD。

为避免理解偏差,此处特别解释 #EBA932 转换后 B 值为 50 50 50 的原因:提取字符串的第六、七位,拼成的十六进制数为 ( 32 ) 16 (32)_{16} (32)16,则有 ( 32 ) 16 = 3 × 1 6 1 + 2 × 1 6 0 = 50 (32)_{16} = 3 \times 16^1 + 2 \times 16^0 = 50 (32)16=3×161+2×160=50

【数据规模与约定】

本题共有 10 个测试点,每通过一个测试点可获得 10 points。

对于 10 % 10\% 10% 的数据,为样例 #1。

对于另外 30 % 30\% 30% 的数据,输入与输出字符串均不包含大写字母。

对于所有的数据,保证给定字符串为合法十六进制颜色码。


解题思路

非常暴力模拟的一题, 一开始输出处理错了, 后来改成了非常粗暴的方式就过了


Code
#include <iostream>
#include <cstdio>
#include <string>
#include <map>

using namespace std;

string s;
map<char,int>f;//zzl熟悉地捡起了熟悉的map
const char k[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int x;

int main(){
	cin >> s;
	for (int i = 0; i <= 9; i++)
	{
		char c = i + 48;
	    f[c] = i;
	}
	f['A'] = 10, f['B'] = 11, f['C'] = 12, f['D'] = 13, f['E'] = 14, f['F'] = 15; 
	//预处理出换算
	printf ("#");
	for (int i = 1; i < s.size(); i++)
	{
		x = x * 16 + f[s[i]];
		if (i % 2 == 0)
		{
			x = 255 - x;
			cout << k[x / 16 % 16] << k[x % 16];
			x = 0;
		}
	}
}
X-plore File Manager Lonely Cat Games - 2014年417日 工具 说明 亮点: ●双窗格的树视图 ●根,FTP,SMB sqlite的,Picasa中,ZIP,RAR,7zip的探险家 ●云存储访问:谷歌驱动器™,升降梭箱,Box.net,Mega.co.nz ***,SkyDrive中,webdav的,Yandex.disk,Ubuntu的一个,SugarSync的,自卸车,Copy.com ●SSH文件传输(SFTP)和SSH壳牌 - http://bit.ly/xp-ssh *** ●应用程序管理器 ●无线文件共享*** - http://bit.ly/xp-wifi ●从PC的Web浏览器管理文件*** - http://bit.ly/xp-web ●加入收藏夹 ●内置观众对图像,视频,音频,文本 ●十六进制查看器 包括缩放和滑动到上一个/下一个图像●快速的图像查看器 ●缩略图的图像和视频,以及对各种文件类型(取决于相关的应用程序) ●多选 - 始终可用,但勿扰 ●查看APK文件为ZIP ●共享 - 通过蓝牙,电子邮件或发送任何文件的设备支持,从任何位置 ●可配置的按钮和快捷键 ●用拉链无缝工作(就好像它是正常的文件夹) ***显着特征是有偿 - 他们需要捐款 的X PLORE可以让你看到你的Andr​​oid设备的内部。还外。 这是一个双窗格的探险家,有两个在同一时间显示文件夹和常用的操作,如复制文件完成从一个窗格到另一个。 和X-PLORE显示在树视图清晰的定位和快速切换到其它位置的文件夹层次结构。 你可以探索设备的内部,如果你是高级用户,让您的设备根深蒂固,您可以更改系统数据 - 备份文件,删除不需要的应用程序等。 如果你是标准用户,您可以选择从视图中隐藏内部存储器和可千万不要乱用系统。 您可以轻松看到您的设备,或者可能连接的USB记忆棒上的大容量存储器内容。 简单的应用程序管理器允许查看,运行,复制,共享,请卸载并进一步探讨安装的应用程序。 无线文件共享 从你通过WiFi其他Android设备的Andr​​oid设备上访问文件。 从PC的Web浏览器访问 管理您从您的电脑的Andr​​oid设备上的文件。 支持访问FTP和FTPS(安全FTP)服务器。 多个服务器可以被配置。 的X PLORE可以显示在LAN(局域网)的其他电脑共享文件夹。 该系统允许访问连接到网络的计算机上的共享文件夹,甚至是远程服务器是否支持SMB协议。 的X PLORE可以访问各种网络存储“云”服务器,并访问他们的文件。 你需要有帐户在支持的Web服务,那么您可以访问由X-PLORE在线存储你的文件。 支持也是SSH文件传输(SFTP)和终端外壳模拟器。 主营业务相关的管理文件和文件夹 - 查看,复制,移动,删除,压缩到压缩,解压,重命名,共享,等等。 Picasa相册 的X PLORE可以在Picasa相册列表图片,下载,创建相册,上传和删除照片,编辑字幕。 SQLite数据库查看器 的X PLORE可以显示SQLite数据库文件(那些。db扩展名)作为表的扩展列表中,用数据库条目的行和列的每个表包含列表。 主要交互是通过触摸屏完成后,单击文件夹或文件,打开文件,或长按以打开包含它可以在特定的点击过的商品或多个选定的项目进行选择上下文菜单。 多选择允许做的操作上更多的文件一次。文件可以通过单击复选框被选中。另外,也可以选择一个文件夹中的所有文件,或者明确的选择,通过点击父文件夹的复选框。 打开文件,可能意味着要使用的内置浏览器,支持大多数常用的文件类型之一:图像,音频,视频和文字。 或者您可以配置的X PLORE使用系统中的应用,例如文件打开,在这种情况下,系统预定义的应用程序,可以打开特定文件启动。 档案馆(目前支持的是ZIP,RAR和7zip的),显示为其他文件夹。 其他的交互可以通过按钮栏,这是两个窗格之间,并且是完全可配置的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值