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


    // Time 46ms, Memory 328K
    #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;
    }
    

  • 相关阅读:
    jqurey技术总结
    ie浏览器兼容问题小结
    FIS的合并压缩技术
    对js中数组的一些总结
    浅谈如何面向对象进行封装
    13th week blog
    12th week blog
    11th week blog
    10th week blog
    9th Week blog
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218182.html
Copyright © 2020-2023  润新知