这个纯粹是一个细节题啊!!!

由于某个地方的浮点数比较写错了,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的更多相关文章

  1. 2013 ACM/ICPC Asia Regional Changsha Online G Goldbach

    比赛的时候,被题目误导了,题目最后说结果可能很大,要取模,那时就想直接求会TLE的!!! 赛后才知道,坑啊………… 代码如下: #include<iostream> #include< ...

  2. 2013 ACM/ICPC Asia Regional Changsha Online - G(DP)

    第一眼就想到DP,然后想了N久就想不到可以不重算的DP  最后没办法了 先算出来 再去重.. 因为最多只有三个 对于三个来说有三种组合情况 x+y+z, x*y*z, x*y+z 那要么 x,y,z都 ...

  3. 2013 ACM/ICPC Asia Regional Changsha Online - E

    第一个被板刷的题 取余 依次算在周几 #include <iostream> #include<cstdio> #include<cstring> #include ...

  4. 2013 ACM/ICPC Asia Regional Changsha Online J Candies

    AC了,但是不知道为什么,但是恶心的不得了~最近写代码,思路都非常清晰,但是代码各种bug~T.T~说说思路吧:二分~330ms~ 小队友fribbi的思路是离线250msAC~ 预处理solve函数 ...

  5. 2013 ACM/ICPC Asia Regional Changsha Online–C (模拟)

    题目描述 略... 题解 注意控制精度即可....变量全部定义成double,结果round就行....妈蛋....被这题目恶心死了.... 代码: #include <iostream> ...

  6. 2013 ACM/ICPC Asia Regional Changsha Online – C题 Color Representation Conversion (坑爹模拟题)

    题意:给你三种颜色表示模式,RGB,HSV和HSL,实现任意模式之间两两转化. 1.最好别看题目中给的转化公式描述,我觉得叙述的一点也不清楚,看维基百科,把维基百科上的公式一句一句翻译过来就好 2.在 ...

  7. 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] ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. Ubuntu下编译内核

    一.下载源代码和编译软件的准备 下载内核源代码:http://www.kernel.org/ 注意,点击2.6.25内核的F版,即完整版. 如果你懒得去网站点联接,运行下列命令:  代码: $cd ~ ...

  2. Libevent windows/linux下编译

    1.windows下: 编译环境: windows xp sp3 + vs2010 (1)    解压libevent-2.0.21-stable.tar.gz到D:\libevent-2.0.21- ...

  3. 从零开始学ios开发(二):Hello World!来啦!

    今天看了书的第二章,主要介绍了一下Xcode的使用方法和一些必要的说明,最后做了一个“Hello World!”的小程序,其实就是在屏幕上用一个Label显示“Hello World!”,一行代码都没 ...

  4. IOS内存管理「1」- 引用计数

  5. EF6 在原有数据库中使用 CodeFirst 总复习(四、新建实体对象)

    在原有数据库中使用 CodeFirst ,除了第一次添加实体后要立即执行一次 Enable-Migrations add-migration Initial  -IgnoreChanges updat ...

  6. 在51系列中data,idata,xdata,pdata的区别

    在51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码 也最小. idata:固定指前面 ...

  7. 如果选择构建ui界面方式,手写代码,xib和StoryBoard间的博弈

    代码手写UI这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用. 大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代 ...

  8. 格式化输出[part1/标准控制符]

    /* 设置输出字符的宽度 width(int)是iostream类的成员函数,可以通过cout对象来调用,即cout.width(int) 注: 1.width(int)只影响将要显示的一个对象,之后 ...

  9. 使用getElementById获取xml中的指定元素

    Document有一个getElementById的方法,在文档中的解释是:     返回具有带给定值的 ID 属性的 Element.如果不存在此类元素,则此方法返回 null.如果多个元素具有带该 ...

  10. 小组开发项目针对性的NABC分析

    单独就我们团队开发项目——重力解锁的功能特点而言,我们解决了智能手机屏幕解锁的乏味和繁琐的特点,显得更有趣味性和独特性,更符合现代人追随时尚的潮流:我们根据个人的不同喜好和便利性来设定一些动作,利用重 ...