#43780: 解答(不會再看)


yp11251167@yphs.tp.edu.tw (704-33陳奕安)

學校 : 臺北市私立延平高級中學
編號 : 237242
來源 : [203.72.178.1]
最後登入時間 :
2024-11-04 17:30:07
m900. 色彩轉換 (Color) -- TOI新手同好會202312第1題 | From: [203.72.178.1] | 發表日期 : 2024-10-30 17:36

//#include<bits/stdc++.h>
using namespace std;

int main(){
    double R,G,B;
    while(cin>>R>>G>>B){
        double H,S,L;
        double r=R/255,g=G/255,b=B/255;
        
        double MAX=max(r,max(b,g));
        double MIN=min(r,min(b,g));
        L=(MAX+MIN)/2;
        
        if(MAX==MIN) H=0;
        else if(MAX==r && g>=b) H=60*(g-b)/(MAX-MIN);
        else if(MAX==r && g<b) H=60*(g-b)/(MAX-MIN)+360;
        else if(MAX==g) H=60*(b-r)/(MAX-MIN)+120;
        else if(MAX==b) H=60*(r-g)/(MAX-MIN)+240;
        
        if(L==0 || MAX==MIN) S=0; 
        else if(L>0 && L<=0.5) S=(MAX-MIN)/(2*L);
        else S=(MAX-MIN)/(2-2*L);
        
        cout<<fixed<<setprecision(0)<<H<<" "<<S*255<<" "<<L*255<<endl; 
    }
    
    return 0;
}

記得把最上面斜線刪掉

 

 
ZeroJudge Forum