题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5705

题目:

Problem Description
Given a time HH:MM:SS and one parameter a , you need to calculate next time satisfying following conditions:
1. The angle formed by the hour hand and the minute hand is a
2. The time may not be a integer(e.g. 12:34:56.78), rounded down(the previous example 12:34:56).
Input
The input contains multiple test cases.
Each test case contains two lines.
The first line is the time HH:MM:SS(0≤HH<12,0≤MM<60,0≤SS<60)
The second line contains one integer a(0≤a≤180)
Output
For each test case, output a single line contains test case number and the answer HH:MM:SS.
Sample Input
0:59:59
30
01:00:00
30
Sample Output
Case #1: 01:00:00
Case #2: 01:10:54

题意:给出时间 HH:MM:SS 角度a 问下一个H和M的角度为a的时刻?

思路:

时针每小时30度,每分钟30/60度,每秒1/120 (3600,60,1)
分针每小时360,每分钟6度,每秒6/60,1/10度; (,720,12)避免精度问题全部乘以120 
算出h,m初始角度 h,m之间角度为deg=abs(h-m),暴力枚举几秒后deg==a即可,O(T)

参考:http://www.bubuko.com/infodetail-2051662.html

代码:

#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
const double eps=1e-;
const int N=2e5+;
int a;
int main()
{
int cas=;
int h,m,s;
while(~scanf("%d:%d:%d",&h,&m,&s))
{
cin>>a;
a*=;
int sum=h*+m*+s;//总的时间(秒)
//h,m初始角度
int hh=sum%(*);
int mm=(sum*)%(*); int ans=;//暴力枚举几秒后
while(true)
{
hh=(hh+)%(*);//时针每秒1/120度,但由于乘了120,所以每次+1度
mm=(mm+)%(*);//分针每秒1/10度,但由于乘了120,所以分针1秒离散成12度
ans++;
int deg=abs(hh-mm);//h,m角度
if(abs(deg-a)<=)//误差在1度内
break;
}
int anss=(ans+s)%;
int ansm=((ans+s)/+m)%;
int ansh=(((ans+s)/+m)/+h)%;
printf("Case #%d: %02d:%02d:%02d\n",cas++,ansh,ansm,anss);
}
return ;
}

hdu5705的更多相关文章

  1. HDU-5705

    Clock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Problem De ...

  2. 2016女生专场 ABCDEF题解 其他待补...

    GHIJ待补... A.HUD5702:Solving Order Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3276 ...

随机推荐

  1. <数据结构基础学习>(四)链表 Part 2

    一.使用链表实现栈 增,删,查只对链表头进行操作,时间复杂度都为O(1) 链表头作为栈顶 LinkedListStack<E> implements Stack<E> publ ...

  2. beego框架的最简单登入演示

    一.controllers逻辑代码 func (c *UserController) Get() { c.TplName="login.html" } func (c *UserC ...

  3. ansible基本使用方法

    一.ansible的运行流程 ansible是基于ssh模块的软件,所以主控端和被控端的ssh服务必须正常才能保证ansbile软件的可用性. 检查ssh服务是否正常:   systemctl sta ...

  4. VUE-Windows系统下搭建vue环境

    一.安装node.js(https://nodejs.org/en/) 下载完毕后,可以安装node,建议不要安装在系统盘(如C:).注意记下路径..   此处默认安装这4项即可,点击Next按钮. ...

  5. canvas绘图工具

    关于canvas绘图,在html页面上太方便了.当然刚开始还是入了不少坑,用了比如jcanvascript等三方插件.真实效果反而不理想,后来就没用插件. 下面是实现效果,可以在线绘制工地图然后传给后 ...

  6. TPS、并发用户数、吞吐量关系

    TPS.并发用户数.吞吐量关系 摘要 主要描述了在性能测试中,关于TPS.并发用户数.吞吐量之间的关系和一些计算方法. loadrunner TPS 目录[-] 一.系统吞度量要素: 二.系统吞吐量评 ...

  7. SpringBoot系列: 使用 consul 作为服务注册组件

    本文基本上摘自纯洁的微笑的博客 http://www.ityouknow.com/springcloud/2018/07/20/spring-cloud-consul.html . 感谢作者的付出. ...

  8. Java(4)switch选择结构

    一.switch结构(开关语句)的语法 switch(表达式 ){--->类型为int.char case  常量1 :--->case 结构可以有多个 //语句块1 break;---& ...

  9. sqlserver 生成脚本执行创建索引

    create or alter proc SP_CreateIndex as begin if exists(select * from sys.objects where name='execsql ...

  10. Django REST Framework API Guide 08

    1.Filtering 2.Pagination FIltering GenericAPIView的子类筛选queryset的简单方法是重写.get_quueryset()方法. 1.根据当前用户进行 ...