hdu 1006 Tick and Tick (解不等式方程)
2013-06-14 08:33
399 查看
// 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; }
相关文章推荐
- hdu 1006 Tick and Tick (解不等式方程)
- HDU 1006 Tick and Tick 解不等式解法
- HDU 1006 Tick and Tick 解不等式解法
- hdu 1006 Tick and Tick 时钟问题
- HDU 1006 Tick and Tick
- HDU 1006 Tick and Tick
- hdu_1006 Tick and Tick(暴力模拟)
- hdu 1006 Tick and Tick 模拟时钟注意时间连续性!
- [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]
- Hdu 1006 Tick and Tick
- hdu 1006 Tick and Tick
- HDU 1006 Tick and Tick
- HDU 1006 Tick and Tick( 模拟题)
- HDU_1006_Tick and Tick
- hdu 1006 Tick and Tick
- HDU-1006 Tick and Tick 几何
- hdu 1006 Tick and Tick
- HDU1006——Tick and Tick
- [HDU 1006] Tick and Tick 模拟题
- hdu 1006 Tick and Tick