程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 1006 Tick and Tick (解不等式方程)

hdu 1006 Tick and Tick (解不等式方程)

編輯:C++入門知識

[cpp]  // Time 46ms, Memory 328K 

// Time 46ms, Memory 328K
[cpp]
?#include<iostream>  
#include<iomanip>  
using namespace std; 
double d; 
struct range 

    double l,r; 
}; 
range get(double a,double b) 

    range p; 
    if(a<0) 
    { 
        p.r=(d-b)/a;p.l=(360-d-b)/a; 
    } 
    else 
    { 
        p.l=(d-b)/a;p.r=(360-d-b)/a; 
    } 
    if(p.l<0) p.l=0; 
    if(p.r>60) p.r=60; 
    if(p.l>p.r) p.l=p.r=0; 
    return p; 

range set(range a,range b) 

    range p; 
    p.l=a.l>b.l?a.l:b.l; 
    p.r=a.r>b.r?b.r:a.r; 
    if(p.l>p.r) p.l=p.r=0; 
    return p; 

double f(int x,int y) 

    int i,j,k; 
    double m,h,a,b,rea=0.0; 
    range s[3][2],s1; 
    m=1.0*y;h=1.0*x; 
    a=1.0/120-0.1; 
    b=30*h-5.5*m; 
    s[0][0]=get(a,b); 
    s[0][1]=get(-a,-b); 
    a=1.0/120-6; 
    b=30*h+0.5*m; 
    s[1][0]=get(a,b); 
    s[1][1]=get(-a,-b); 
    a=0.1-6; 
    b=6*m; 
    s[2][0]=get(a,b); 
    s[2][1]=get(-a,-b); 
    for(i=0;i<2;i++) 
        for(j=0;j<2;j++) 
            for(k=0;k<2;k++) 
            { 
                s1=set(set(s[0][i],s[1][j]),s[2][k]); 
                rea+=s1.r-s1.l; 
            } 
    return rea; 

int main() 

    int i,j; 
    double s; 
    while(cin>>d && d!=-1) 
    { 
        s=0.0; 
        for(i=0;i<12;i++) 
        { 
            for(j=0;j<60;j++) 
            { 
                s+=f(i,j); 
            } 
        } 
        cout<<fixed<<setprecision(3)<<s*100.0/(3600*12)<<endl; 
    } 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved