HDU1006
single line with a real number D between 0 and 120, inclusively. The input is
terminated with a D of -1.
time in a day that all of the hands are happy, accurate up to 3 decimal
places.
#include <stdio.h>
#include <math.h>
#include<iostream>
#include <algorithm>
using namespace std;
struct qujian
{
double l,r;
};
double D; qujian solve(double a,double b) //解方程 D<=a*x+b<=360-D ,并且和 [0,60] 取交集
{
qujian p1;
if(a>)
{
p1.l=(D-b)/a;
p1.r=(-D-b)/a;
}
else
{
p1.l=(-D-b)/a;
p1.r=(D-b)/a;
}
if(p1.l<)
p1.l=;
if(p1.r>)
p1.r=;
if(p1.l>=p1.r)
p1.l=p1.r=;
return p1;
}
qujian compare(qujian a,qujian b)
{
qujian p;
p.l=max(a.l,b.l);
p.r=min(a.r,b.r);
if(p.l>p.r)
p.l=p.r=;
return p;
} double happytime(double h,double m)
{
double a,b;
int i,j,k;
qujian s[][],p2; //解方程D<=|hh-mm|<=360-D
a=1.0/120.0-0.1; //hh=30*h+m/2+s/120;
b=*h+m/2.0-*m;
s[][]=solve(a,b);
s[][]=solve(-a,-b); a=0.1-;
b=*m;
s[][]=solve(a,b);
s[][]=solve(-a,-b); a=1.0/-;
b=*h+m/2.0;
s[][]=solve(a,b);
s[][]=solve(-a,-b); double ans=;
for(i=; i<; i++)
{
for(j=; j<; j++)
for(k=; k<; k++)
{
p2=compare(compare(s[][i],s[][j]),s[][k]);
ans+=p2.r-p2.l;
}
}
return ans;
} int main()
{
while(scanf("%lf",&D))
{
if(D==-)
break;
double h,m,ans=;
for(h=; h<; h++)
{
for(m=; m<; m++)
ans+=happytime(h,m);
}
printf("%.3lf\n",ans*100.0/(**));
}
return ;
}
HDU1006的更多相关文章
- HDU--1006
题目介绍 Problem Description The three hands of the clock are rotating every second and meeting each oth ...
- hdu1006 Tick and Tick
原题链接 Tick and Tick 题意 计算时针.分针.秒针24小时之内三个指针之间相差大于等于n度一天内所占百分比. 思路 每隔12小时时针.分针.秒针全部指向0,那么只需要计算12小时内的百分 ...
- hdu1006 Tick and Tick (数学题 借鉴了大神的博客)
先缩短一半的时间:早上的12个小时和下午的12小时对时钟是一样的,因为时钟12小时与0小时的三针位置相同.接着就是了解到每次所有的针从有重合到再次有重合至多有一段连续的段符合三针分离度大于n.所以只要 ...
- 【hdu1006】解方程
http://acm.hdu.edu.cn/showproblem.php?pid=1006 这题坑了我好久,发现居然是一个除法变成了整除,TAT,所以建议在写较长的运算表达式的时候出现了除法尽量加个 ...
- hdu_1006 Tick and Tick(暴力模拟)
hdu1006 标签(空格分隔): 暴力枚举 好久没有打题了,退队了有好几个月了,从心底不依赖那个人了,原来以为的爱情戏原来都只是我的独角戏.之前的我有时候好希望有个人出现,告诉自己去哪里,做什么,哪 ...
随机推荐
- 举例说明划分子网,路由器IP地址
划分子网的方法是从网络的主机号借用若干位作为子网号,主机号相应地减少了同样的位数.在划分子网前,IP地址是两级结构的:网络号,主机号. 划分子网后,两级IP地址在本单位内部就变为三级IP地址:网络号, ...
- android网络判断
//ConnectivityManager管理网络连接相关的操作 ConnectivityManager connectivityManager = (ConnectivityManager) con ...
- Android ROM 备书
1. Android ROM 目录接口 我们经常说的刷ROM是刷系统的意思,但是ROM的原意并不是这样,ROM的全称是read only memory只读储存器,正因为它是“只读”的,而且系统文件通常 ...
- 【Spring 2】spring的属性注入形式
一.注入简介 spring是一个java bean的容器,它摒弃了过去通过new关键字调用类再调用类的实例的形式,通过依赖注入维护者一系列的java bean的示例.通过spring所提供的依赖注入 ...
- Redis 2:简单使用
导读:上一篇博客对于Redis进行了简单的介绍,本篇博客就浅显的说一下Redis的基本操作使用.本次测试的环境是window8.1,呃,没用Linux等其他系统,就下载的window环境的安装包. 一 ...
- Duilib学习笔记《02》— 界面布局
1. 界面描述XML文件 Duilib主要是通过XML来进行界面的布局配置,程序通过读取并解析XML文件来创建对应的窗体.DuiLib的页面布局分为三类:窗体(Window).容器(Contain)和 ...
- ionic icons and splash
ionic 用cordova 可以直接设置自己的icons ,不用修改默认的图片了 1.在自己的根目录下新建一个文件夹 如icons 2.然后在icons文件夹下再建一个iOS 文件夹存放所需要的图 ...
- SVN与TortoiseSVN实战:补丁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...
- C# 发送邮件方法2
一. 发送邮件程序:(使用System.Web.Mail下的类) "; //SMTP服务密码 strFrom = "jailu@163.com"; //发送方邮件地址 C ...
- 【MVC】ASP.NET MVC 请求生命周期
当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在asp.net mvc应用程序Http request和Http response 过程中,主要包含8个步骤: ...