2013 ACM/ICPC Asia Regional Changsha Online - C Color Representation Conversion
这个纯粹是一个细节题啊!!!
由于某个地方的浮点数比较写错了,WA了无数次啊……
代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
char str1[],str2[];
double h,s,l,r,g,b,v;
bool is(double h,double a,double b)
{
if(h-a>=-1e-&&h-b<1e-) return ; //这里忘记加-,一直是WA……
return ;
}
void v_r()
{
double c=v*s;
double hh=h/60.0;
double x=c*(-fabs(fmod(hh,2.0)-1.0));
r=g=b=;
if(is(hh,,))r=c,g=x;
else if(is(hh,,)) r=x,g=c;
else if(is(hh,,)) g=c,b=x;
else if(is(hh,,)) g=x,b=c;
else if(is(hh,,)) r=x,b=c;
else if(is(hh,,)) r=c,b=x;
double m=v-c;
r+=m;
g+=m;
b+=m;
}
void l_r()
{
double c=(1.0-fabs(2.0*l-1.0))*s;
double hh=h/60.0;
double x=c*(1.0-fabs(fmod(hh,2.0)-1.0));
r=g=b=;
if(is(hh,,))r=c,g=x;
else if(is(hh,,)) r=x,g=c;
else if(is(hh,,)) g=c,b=x;
else if(is(hh,,)) g=x,b=c;
else if(is(hh,,)) r=x,b=c;
else if(is(hh,,)) r=c,b=x;
double m=l-c*0.5;
r+=m;
g+=m;
b+=m;
}
void r_l_v(char c)
{
double ma=max(max(r,g),b);
double mi=min(min(r,g),b),t=ma-mi;
if(ma-mi<1e-) h=;
else if(ma-r<1e-&&g>=b) h=*(g-b)/t;
else if(ma-r<1e-&&g<b) h=*(g-b)/t+;
else if(ma-g<1e-) h=*(b-r)/t+;
else if(ma-b<1e-) h=*(r-g)/t+;
l=(ma+mi)*0.5;
v=ma;
if(c=='L'){
if(fabs(l)<=1e-||fabs(t)<=1e-) s=;
else if(l-0.5<=1e-) s=t/2.0/l;
else s=t/(-*l);
}
else{
if(fabs(ma)<1e-) s=;
else s=-mi/ma;
}
}
int main()
{
while(scanf("%s",str1)!=EOF){
scanf("%s",str2);
if(str2[]=='L'){
scanf("%lf %lf%% %lf%%",&h,&s,&l);
if(str1[]=='L'){
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,s,l);
continue;
}
s/=;l/=;
l_r();
if(str1[]=='B')
printf("%s %.0lf %.0lf %.0lf\n",str1,round(*r),round(*g),round(*b));
else{
r_l_v('V');
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,round(*s),round(*v));
}
}
else if(str2[]=='V'){
scanf("%lf %lf%% %lf%%",&h,&s,&v);
if(str1[]=='V'){
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,s,v);
continue;
}
s/=;v/=;
v_r();
if(str1[]=='B')
printf("%s %.0lf %.0lf %.0lf\n",str1,round(*r),round(*g),round(*b));
else{
r_l_v('L');
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,round(*s),round(*l));
}
}
else if(str2[]=='B'){
scanf("%lf%lf%lf",&r,&g,&b);
if(str1[]=='B'){
printf("%s %.0lf %.0lf %.0lf\n",str1,r,g,b);
continue;
}
r/=;g/=;b/=;
if(str1[]=='L'){
r_l_v('L');
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,round(*s),round(*l));
}
else{
r_l_v('V');
printf("%s %.0lf %.0lf%% %.0lf%%\n",str1,h,round(*s),round(*v));
}
}
}
return ;
}
2013 ACM/ICPC Asia Regional Changsha Online - C Color Representation Conversion的更多相关文章
- 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach
比赛的时候,被题目误导了,题目最后说结果可能很大,要取模,那时就想直接求会TLE的!!! 赛后才知道,坑啊………… 代码如下: #include<iostream> #include< ...
- 2013 ACM/ICPC Asia Regional Changsha Online - G(DP)
第一眼就想到DP,然后想了N久就想不到可以不重算的DP 最后没办法了 先算出来 再去重.. 因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都 ...
- 2013 ACM/ICPC Asia Regional Changsha Online - E
第一个被板刷的题 取余 依次算在周几 #include <iostream> #include<cstdio> #include<cstring> #include ...
- 2013 ACM/ICPC Asia Regional Changsha Online J Candies
AC了,但是不知道为什么,但是恶心的不得了~最近写代码,思路都非常清晰,但是代码各种bug~T.T~说说思路吧:二分~330ms~ 小队友fribbi的思路是离线250msAC~ 预处理solve函数 ...
- 2013 ACM/ICPC Asia Regional Changsha Online–C (模拟)
题目描述 略... 题解 注意控制精度即可....变量全部定义成double,结果round就行....妈蛋....被这题目恶心死了.... 代码: #include <iostream> ...
- 2013 ACM/ICPC Asia Regional Changsha Online – C题 Color Representation Conversion (坑爹模拟题)
题意:给你三种颜色表示模式,RGB,HSV和HSL,实现任意模式之间两两转化. 1.最好别看题目中给的转化公式描述,我觉得叙述的一点也不清楚,看维基百科,把维基百科上的公式一句一句翻译过来就好 2.在 ...
- 2013 ACM/ICPC Asia Regional Changsha Online - J
原题戳这里. 题意: 有一未知列数a1,a2,a3.....an, 已知s[i]=a[i-1]+a[i]+a[i] (1<i<n) s[1]=a[1]+a[2]; s[n]=a[n-1] ...
- hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...
随机推荐
- Eclipse常用快捷键使用
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] 此快捷键为用户编辑的好帮手 ...
- (转)eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法
文章来源:http://blog.csdn.net/zcyhappy1314/article/details/8307534 下面说的这种情况是在正确安装ADT插件的前提下,重启eclipse后,工具 ...
- c# 各种排序算法+找第二大的数+句子单词反转
冒泡排序 // 冒泡排序 bubble sort public static int[] BubbleSort(int []array) { bool isContinue = true; ; i & ...
- Web中Listener的创建
使用Listener只需要两个步骤: 定义Listener实现类. 通过Annotation或在web.xml文件中配置Listener 实现Listener类 监听不同Web事件的监听器不相同,常用 ...
- Linux C 文件与目录3 文件读写
文件读写 文件读写是指从文件中读出信息或将信息写入到文件中.Linux文件读取可使用read函数来实现的,文件写入可使用write函数来实现.在进行文件写入的操作时,只是在文件的缓冲区中操作,可能没有 ...
- KinectStudio使用教程
在Kinect SDK 2.0安装结束之后,会有一个KinectStudio的调试工具,他可以将动作记录下,以后即便脱离了Kinect传感器也可以愉快的调试了.现在我们来看看如何使用 首先打开Kine ...
- OO之工厂模式
以下为工厂模式的详解,包括简单工厂,普通工厂模式,抽象工厂. 引子: 假设有一个交通工具公司,生产自行车,汽车,飞机等,现要销售该公司的产品,要怎么设计呢? 在交通工具商店中加一个if else判断如 ...
- typedef和自定义结构体类型
在自定义结构体类型时会用到typedef关键字.大家都知道typedef是取别名的意思,在C语言中跟它容易混淆的有const,#define等,其区别不在本篇文章讨论之列. /*定义单链表结点类型*/ ...
- html表格属性
一.在表格中插入文字及图片 1.把图片及文字分开到不同的[tr]标签表格内. <html> <body> <table border="1" widt ...
- Log4Net学习【二】
Log4Net结构详解 当我们在描述为系统做日志这个动作的时候,实际上描述了3个点:做日志,其实就是在规定,在什么地方 用什么日志记录器 以什么样的格式做日志.把三个最重要的点抽取出来,即什么地方,日 ...