1156: 钟
2015-06-03 15:17
211 查看
Description
对于时钟,我们再熟悉不过了,有时针、分针、秒针三根针,用他们的位置表示当前的时间。 问题是这样的,Faith有一个电子手表,上面显示的时间格式为 hh:mm。Faith想知道手表显示的这个时间在钟上的时针和分针的夹角有多大。
Input
题目有多组输入,请处理到文件结束。 每组数据一行,格式如 hh:mm(如 11:08)
Output
输出当前时间以及相应时间时针与分针的夹角(保留到小数点后一位),以一个空格隔开。
Sample Input
00:0006:00
Sample Output
00:00 0.006:00 180.0
规律:
用字母和公式表示:
当时间为h点m分时,其时针与分针夹角的度数为:
(1)分针在时针前面:
m*6-(h*30+m*0.5)
(2)分针在时针后面:
(h*30+m*0.5)-h*6
依据此公式可以求出任意时刻时针与分针夹角的度数,计算起来非常便捷。如果题目中涉及到秒,我们可以先把秒换算为分,再套用上述规律和公式进行计算即可。
注意:角度都为正,角度都小于180度。
#include<iostream> #include<cstring> #include<cmath> #include<iomanip> using namespace std; int main() { char n[6]; while (cin >> n) { int h, m; double d; h = ((n[0] - '0') * 10) + (n[1] - '0'); h = (h % 12); m = ((n[3] - '0') * 10) + (n[4] - '0'); if (h * 5 > m) { d = (h * 30 + m*0.5) - m * 6; } else { d = m * 6 - (h * 30 + m*0.5); } d = fabs(d); if (d > 180) { d = 360 - d; } cout << n << ' '; cout << setiosflags(ios::fixed) << setprecision(1) << d; cout << endl; } return 0; }
相关文章推荐
- iOS生成随机数
- oracle 11g expdp impdp详细使用方法
- 【leetcode c++】twoSum
- Android SlidingMenu 使用详解
- 前端学习笔记之页面制作(三)——HTML
- 前端学习笔记之页面制作(二)——开发环境Sublime Text2(持续更新)
- 我们常用的测试管理工具—JIRA篇
- 里程计、推算定位与视觉里程计
- 关于FVID2_Frame结构体的一点疑惑
- 优秀的程序员和一般的程序员差别在哪?
- android helloworld级别学习
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- 《Entity Framework 6 Recipes》中文翻译系列 (39) ------ 第七章 使用对象服务之配置模型和使用单复数服务
- 关于iReport汉化版强制使用英文的配置方法
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 怎么和陌生人说话
- 一个简单打开D盘所有文件夹和文件的例子以及动态创建双击事件
- 由底层和逻辑深入剖析c++系列
- 基础设施即服务 PaaS, 平台即服务 IaaS
- NodeJS npm常用命令