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 ...
随机推荐
- Java使用FileLock实现Java进程互斥锁
原理:JDK的nio包中FileLock实现类似Linux fcntl的文件锁, 可使文件被进程互斥访问. 借助此功能, 可以实现强大的Java进程互斥锁, 从而在应用层面保证同一时间只有惟一的Ja ...
- Java实现UDP之Echo客户端和服务端
Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...
- 使用C语言在Win控制台中输出带颜色的文字
学了这么久的C语言,一直停留在编写“控制台”程序的水平.黑色窗口,白色的文字,看多了着实让人感到枯燥无味.但是作为业余爱好者,我既没有那么多时间和精力去学习如何编写窗口程序,也没有那个必要一定用C去调 ...
- Vue2.0的通用组件
饿了么基于Vue2.0的通用组件开发之路(分享会记录) Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库. ...
- 静态数据认证(SDA)与动态数据认证(DDA)的区别
PBOC/EMV里有两个非常重要的概念,SDA(staticdataauthentication)和DDA(dynamicdataauthentication),分别叫做静态数据认证和动态数据认证.这 ...
- Capacity Scheduler 队列设置
先附一个官网地址 Capacity Scheduler是YARN中默认的资源调度器. 相关参数配置: 资源分配相关参数 ``` (1) capacity:队列的资源容量(百分比). 当系统非常繁忙时, ...
- 封装getByClass
方法一:(普通版),获取单一的class: function getByClass(oParent, sClass) { var aResult = []; var aEle = oParent.ge ...
- 10、android学习资源整理
1.github上整理好的开源工程 https://github.com/Trinea/android-open-project 2.最流行的android组件大全 http://colobu.com ...
- ACK
ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误. 目录 1基本介绍 2详细释义 1基本介绍编辑 英文缩 ...
- angular 嵌套实现树结构 ng-repeat ng-include
效果图 ang.html <!doctype html><html lang="en"><head> <meta charset=& ...