#include <cstdio>
#include <algorithm>
using namespace
std;
const double UB=43200;
const double
hm=11.0/120,hs=719.0/120,sm=59.0/10;
const double
T_hm=UB/11,T_hs=UB/719,T_sm=3600.0/59;
int main()
{
double d;
double
s[3],e[3],ts[3],te[3];
while(scanf("%lf",&d),d!=-1)
{
s[0]=d/hm;
s[1]=d/hs;
s[2]=d/sm;
e[0]=(360-d)/hm;
e[1]=(360-d)/hs;
e[2]=(360-d)/sm;
double
sum=0;
for(ts[0]=s[0],te[0]=e[0];ts[0]<UB;ts[0]+=T_hm,te[0]+=T_hm)
{
if(te[0]>UB)
te[0]=UB;
for(ts[1]=s[1],te[1]=e[1];ts[1]<UB;ts[1]+=T_hs,te[1]+=T_hs)
{
if(ts[1]>te[0])
break;
if(te[1]<ts[0])
continue;
if(te[1]>UB)
te[1]=UB;
for(ts[2]=s[2],te[2]=e[2];ts[2]<UB;ts[2]+=T_sm,te[2]+=T_sm)
{
if(ts[2]>te[1]||ts[2]>te[0])
break;
if(te[1]<ts[0]||te[2]<ts[1])
continue;
if(te[2]>UB)
te[2]=UB;
double start=max(max(ts[0],ts[1]),ts[2]);
double
end=min(min(te[0],te[1]),te[2]);
if(end>start)sum+=end-start;
}
}
}
printf("%.3f\n",sum*100.0/UB);
}
return
0;
}
原文:http://www.cnblogs.com/ct0421/p/3608499.html