acm--1006
//用角速度考虑解决问题
#include <cstdio>
#include <math.h>
#include <iostream>
#include <algorithm>
#define V_SEC 6.0 //秒针角速度
#define V_MIN 0.1 //分针角速度
#define V_HOU 1.0/120 //时针角速度
#define A_SEC s*6 //秒针角度
#define A_MIN m*6+s*0.1 //分针角度
#define A_HOU h*30+m*0.5+s/120.0 //时针角度
using namespace std;
struct interval { //区间
double l; //left
double r; //right
};
double Angle; //角度
int s=0; //秒数
interval solve(double v,double a) { //解方程
//Angle<=v*t+a<=360-Angle;,并且和[0,60]取交集
interval p;
if(v>0) {
p.l=(Angle-a)/v;
p.r=(360-Angle-a)/v;
} else {
p.l=(360-Angle-a)/v;
p.r=(Angle-a)/v;
}
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;
}
interval jiao(interval a,interval b) {
interval p;
p.l=max(a.l,b.l);
p.r=min(a.r,b.r);
if(p.l>=p.r)p.l=p.r=0;
return p;
}
double happytime(int h,int m) { //计算h时m分 满足题意的秒数
double v_diff;//速度差
double a_diff;//角度差
interval s0[3][2];
interval s1;
/*解方程 Angle<=|hh-mm|<=360-Angle*/
v_diff=V_HOU-V_MIN;
a_diff=A_HOU-A_MIN;//时针分针夹角
s0[0][0]=solve( v_diff, a_diff);
s0[0][1]=solve(-v_diff,-a_diff);
/*解方程 Angle<=|hh-ss|<=360-Angle*/
v_diff=V_HOU-V_SEC;
a_diff=A_HOU-A_SEC;//时针秒针夹角
s0[1][0]=solve( v_diff, a_diff);
s0[1][1]=solve(-v_diff,-a_diff);
/*解方程 Angle<=|mm-ss|<=360-Angle*/
v_diff=V_MIN-V_SEC;
a_diff=A_MIN-A_SEC;//分针秒针夹角
s0[2][0]=solve( v_diff, a_diff);
s0[2][1]=solve(-v_diff,-a_diff);
/*
六个区间,选三个取交集
因为绝对值的式子得到的两个区间要并,而三个不同表达式
的区间要交,故这样做
*/
double res=0;
for(int i=0; i<2; i++)
for(int j=0; j<2; j++)
for(int k=0; k<2; k++) {
s1=jiao(jiao(s0[0][i],s0[1][j]),s0[2][k]);
res+=s1.r-s1.l;
}
return res;
}
int main() {
int h,m;
while(scanf("%lf",&Angle)) {
if(Angle==-1)break;
double res=0;
for(h=0; h<12; h++)
for(m=0; m<60; m++)
res+=happytime(h,m);
printf("%.3lf\n",res*100.0/43200);
}
}
//没有找到恰当的方法解决问题,思考角度不够
acm--1006的更多相关文章
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 武汉科技大学ACM:1006: 我是老大
Problem Description 今年是2021年,正值武汉科技大学 ACM俱乐部成立10周年.十周年庆祝那天,从ACM俱乐部走出去的各路牛人欢聚一堂,其乐融融.庆祝晚会上,大家纷纷向俱乐部伸出 ...
- 武汉科技大学ACM:1006: 华科版C语言程序设计教程(第二版)例题4.17
Problem Description 输入一个整数,求它的素数因子.并按照格式输出. Input 一个整数n.(2<=n<=100) Output n=a*b*c*... (a,b,c为 ...
- 武汉科技大学ACM :1006: 华科版C语言程序设计教程(第二版)习题7.15
Problem Description 输入n个字符串(n<=100),输出其中最长的串,如果有多个则取最先找到的那一个. Input 多组测试数据. 每组测试数据第一行包含一个整数n,表示一共 ...
- 武汉科技大学ACM :1006: 零起点学算法25——求两点之间的距离
Problem Description 输入平面坐标系中2点的坐标,输出它们之间的距离 Input 输入4个浮点数x1 y1 x2 y2,分别是点(x1,y1) (x2,y2)的坐标(多组数据) Ou ...
- 武汉科技大学ACM :1006: A+B for Input-Output Practice (VI)
Problem Description Your task is to calculate the sum of some integers. Input Input contains multipl ...
- ACM学习历程—BestCoder 2015百度之星资格赛1006 单调区间(组合数学)
Problem Description 百小度最近在逛博客,然后发现了一个有趣的问题. 如下图所示,是一个12 位数014326951987 , 它的数字先逐渐变大, 然后变小,再变大,接着变小,又变 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 【转】ACM博弈知识汇总
博弈知识汇总 转自:http://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍 ...
- acm数学(转)
这个东西先放在这吧.做过的以后会用#号标示出来 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能 ...
随机推荐
- Docker 简单运用
Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上万的节点,容器和 VM(虚拟机)的主要区别是,容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离.虚拟机可能需要一分钟 ...
- Ubuntu 下 /etc/resolv.conf文件总是自动清除问题的解决方案
最近学习Linux,在虚拟机中安装的是Ubuntu操作系统,用了几天发现Ubuntu无法上网,打开命令终端,输入命令: ping www.baidu.com -c2 结果显示名称无法识别,而直接与宿主 ...
- 22_CopyOnWrite容器
[简述] Copy-On-Write简称COW,是一种程序设计中的优化策略. JDK里的COW容器分为两种:CopyOnWriteArrayList 和 CopyOnWriteArraySet. Co ...
- C#开发小技巧
001.判断一个Form是否已关闭并释放,需要从引用和对象两方面来判断,判断引用是否为null:mainfm==null判断引用的对象是否已释放:mainfm.IsDisposedMainFormma ...
- qt 拷贝文件设置进度条
/** * @brief FuncModuleWin::copyFile * @param fromFIleName 优盘里面的文件 * @param toFileName 拷贝到/bin里面的启动文 ...
- Linux--sudo权限讲解
sudo简介:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间,同 ...
- temp表空间被过多占用处理方法
这个步骤比较简单,查询v$sort_usage就可以了: (select username,session_addr,sql_id,contents,segtype,blocks*8/1024/102 ...
- 单片机课程设计>八音盒
2017—2018学年度第一学期 <单片机原理及应用>作品考试 八音盒 2017-2018-1<单片机原理及应用>作品设计提交文档 一.作品设计目的 1.利用51单片机的各个部 ...
- 五·管理mysql
在上一篇文章中 四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码安装) 已经安装好了mysql,也正常启动了.本篇文章主要内容是管理m ...
- BZOJ2160:拉拉队排练(Manacher)
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...