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

由于某个地方的浮点数比较写错了,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. Java使用FileLock实现Java进程互斥锁

    原理:JDK的nio包中FileLock实现类似Linux fcntl的文件锁, 可使文件被进程互斥访问.  借助此功能, 可以实现强大的Java进程互斥锁, 从而在应用层面保证同一时间只有惟一的Ja ...

  2. Java实现UDP之Echo客户端和服务端

    Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  3. 使用C语言在Win控制台中输出带颜色的文字

    学了这么久的C语言,一直停留在编写“控制台”程序的水平.黑色窗口,白色的文字,看多了着实让人感到枯燥无味.但是作为业余爱好者,我既没有那么多时间和精力去学习如何编写窗口程序,也没有那个必要一定用C去调 ...

  4. Vue2.0的通用组件

    饿了么基于Vue2.0的通用组件开发之路(分享会记录)   Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库. ...

  5. 静态数据认证(SDA)与动态数据认证(DDA)的区别

    PBOC/EMV里有两个非常重要的概念,SDA(staticdataauthentication)和DDA(dynamicdataauthentication),分别叫做静态数据认证和动态数据认证.这 ...

  6. Capacity Scheduler 队列设置

    先附一个官网地址 Capacity Scheduler是YARN中默认的资源调度器. 相关参数配置: 资源分配相关参数 ``` (1) capacity:队列的资源容量(百分比). 当系统非常繁忙时, ...

  7. 封装getByClass

    方法一:(普通版),获取单一的class: function getByClass(oParent, sClass) { var aResult = []; var aEle = oParent.ge ...

  8. 10、android学习资源整理

    1.github上整理好的开源工程 https://github.com/Trinea/android-open-project 2.最流行的android组件大全 http://colobu.com ...

  9. ACK

    ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误. 目录 1基本介绍 2详细释义     1基本介绍编辑 英文缩 ...

  10. angular 嵌套实现树结构 ng-repeat ng-include

    效果图 ang.html <!doctype html><html lang="en"><head>    <meta charset=& ...