Clock

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)

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  
 
Source
 
题解:给出一个当前的时间和角度a,问从现在开始的下一个时针和分针形成角度a的时间是多少,时间向下取整。
 
思路:时针3600s走30°,故120s走1°,分针3600s走360°,故10s走1°,那么每过120s它们就会相差11°,即每过120/11s相差1°,因此设tar是从0:00:00到当前的时间所经过的秒数,cnt也是一样,但是cnt的初始值是a°乘以120/11s,也就是说它是从0:00:00开始的第一个所能形成角度a的时间,然后不断地变更到下一个角度为a的时间即可(所有的时间都先用秒来表示,最后换算成时间),直到超过了tar,那么它就是第一个过了当前时间的并且形成角度a的时间了。但是要注意的一个问题就是,乘以一个分数可能会出现精度问题(事实上在这题它的确出现了),所以把1秒钟再拆成11个小单位,也就是说把所有的时间都换算成更小的单位(即乘以11),这样就可以避免精度问题了。
(来源:https://www.cnblogs.com/zzyDS/p/5539014.html)
 
代码:
 #include <stdio.h>
int main()
{
int h,m,s,a,da,tots=**,kase=;
while(scanf("%d:%d:%d",&h,&m,&s)==)
{
int tar = *(h*+m*+s);
scanf("%d",&a);
da = - *a;
int cnt = a*, f = ;
//一开始的位置在它们相差了a°的位置(显然第一次是分针在前)
while(cnt<=tar)
{
if(f)
{
f=;
cnt+=da*;//第一次追及是分针追(360-2*a)的角度,以再一次形成相差a°的情况
//这一次是分针在时针前面a°
}
else
{
f=;
cnt+=*a*;//再追2*a°,分针又在时针前a°
//此后一直循环往复直到超过当前时间
}
}
if(cnt>=tots) cnt-=tots;
int ansh,ansm,anss;
ansh = cnt/(*);
cnt%=*;
ansm=cnt/(*);
cnt%=*;
anss=cnt/;
printf("Case #%d: %02d:%02d:%02d\n",kase++,ansh,ansm,anss);
}
return ;
}

HDU-5705的更多相关文章

  1. HDU 5705 Clock (精度控制,暴力)

    题意:给定一个开始时间和一个角度,问你下一个时刻时针和分针形成这个角度是几点. 析:反正数量很小,就可以考虑暴力了,从第一秒开始暴力,直到那个角度即可,不会超时的,数目很少,不过要注意精度. 代码如下 ...

  2. HDU 5705 Clock(模拟,分类讨论)

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

  3. HDU 5705 Clock(2016杭电女生专场1004)——角度追及问题

    题意是给出一个当前的时间和角度a,问从现在开始的下一个时针和分针形成角度a的时间是多少,时间向下取整. 分析:时针3600s走30°,故120s走1°,分针3600s走360°,故10s走1°,那么每 ...

  4. 2019的hdu暑假作业(欢迎纠错)

    1219 遍历计数. #include<bits/stdc++.h> #define QAQ 0 using namespace std; ]; ]; int main(){ )){ me ...

  5. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

  6. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

  7. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  9. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  10. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. 存储那些事儿(五):BTRFS文件系统之Btree结构详解

    Btree数据结构可以说是BTRFS文件系统的基础.它提供了一个通用的方式去存储不同的数据类型.它仅仅存储3个数据类型:key, item和block header. btrfs_header的定义如 ...

  2. Socket编程实践(11) --epoll原理与封装

    常用模型的特点 Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 se ...

  3. Touch Handling in Cocos2D 3.x(七)

    在touchMoved方法中寻找触摸在父节点(CCScene)中的位置并且移动CCDragSprite到其父节点的相应位置中去. 在我们在动作中观赏拖放机制之前,我们需要使用这个新实现的类.打开Mai ...

  4. Leetcode_125_Valid Palindrome

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41488377 Valid Palindrome Given ...

  5. shell 中的特殊变量

    shell 中的特殊变量 变量名   含义 $#     参数的个数 $$     代表所在命令的PID $0     shell或shell脚本的名字 $*     以一对双引号给出参数列表 $@  ...

  6. C++格式化输出,C++输出格式控制

    在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式 输出一个 整数,对输出的小数只保留两位小数等.有两种方 ...

  7. web容器的会话机制

    基本所有web应用开发的朋友都很熟悉session会话这个概念,在某个特定时间内,我们说可以在一个会话中存储某些状态,需要的时候又可以把状态取出来,这整个过程的时间空间可以抽象成"会话&qu ...

  8. LeetCode之“树”:Binary Tree Preorder && Inorder && Postorder Traversal

    Binary Tree Preorder Traversal 题目链接 题目要求: Given a binary tree, return the preorder traversal of its ...

  9. Android群英传笔记——第二章:Android开发工具新接触

    Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...

  10. Android全局异常处理 实现自己定义做强制退出和carsh日志抓取

    在做android项目开发时,大家都知道都会遇到程序报错或者Anr异常,会弹出来一个强制退出的弹出框,对于开发人员是好事,但是对于用户体验和 UI实在毫无违和感,别说用户接受不了,就连我们自己本身可能 ...