编程题:计算时针与分针的角度

目录

  • 问题描述
  • 输入
  • 输出
    • 样例
  • 问题解析

问题描述

给定时、分(24小时制),输出对应的时间在表盘上时针和分针的角度,即从时针开始顺时针第一次到达分针构成的角度。

输入

两个整数,时H,分M

输出

时针和分针构成的角度,该角度的定义见问题描述部分

样例

输入:

0 10
9 27
14 35
23 59

输出:

55
238.5
132.5
354.5

问题解析

题目描述虽然是 24 小时制,但是 23:59 和 11:59 的时针和分针在表盘上的位置是相同的,因此可以(通过取余操作)把问题简化成12小时制。

下面以 9:10 为例描述计算方式:
每经过1小时,时针转动的角度是 360° / 12h = 30°/h;
每经过1分钟,分针转动的角度是 360° / 60min = 6°/min;
那么,每经过1分钟,时针转动的角度是 30° / 60min = 0.5°/min;

以0点的位置为参考点,顺时针来看,分针转过的角度 = M * 6 ,时针转过的角度 = H * 30 + M * 0.5 。

要求时针顺时针到达分针的角度,我们可以分两步,求出时针顺时针到0点的角度A,再求0点顺时针到分针的角度B,则时针顺时针到分针的角度 = (A + B)% 360。

A和B根据上面的讨论很容易就计算出来。

代码:

#include <bits/stdc++.h>

using namespace std;

float angle(int H,int M)
{
    H=H%12;
    M=M%60;
    float Hour2Zero=360-(30*H+0.5*M);
    float Zero2Min= 6*M;
    float ans=Hour2Zero+Zero2Min;

    return ans>=360 ? ans-360:ans;
}

int main()
{
    int H,M;
    while(cin>>H>>M)
    {
        cout<<angle(H,M)<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/darknessplus/p/10687130.html

时间: 2024-11-07 22:48:14

编程题:计算时针与分针的角度的相关文章

时针与分针夹角

hour,minute = float(input("请输入时针:")),float(input("请输入分针:")) def degree(hour,minute): hour = hour*30%360 + minute*6/12 minute = minute*6 return abs(minute - hour) degree(hour,minute) 原文地址:https://www.cnblogs.com/NoteBook3013/p/10170379.

逻辑思维题之时针分针秒针问题

#时针分针秒针是否重合好像是高中物理题?# 如题: 一天有24小时,在这24小时之中,时钟的时针.分针重合多少次? 答:22次.24小时之内分针会转过24圈,而时针也会转过2圈(易忽略导致以为重合24次),这就有些类似追击问题了.让我们仔细分析一下. 假设钟表从刚好0点开始走,此时时针和分针是重合的,那么在11点之前必定每个小时都会有一次重合,当到11点快重合的时候,时针已经快完成了一圈的旅程即将到达12点,所以他们恰好是在12点整重合的,越过12点,时针又开始新的一圈. 那么重合的时间有:12

时针分针夹角问题

上高中的小明暗恋女神三年,高考结束后,小明决定向女神表白.这天,小明来到女神楼下等待女神的出现,时间一分一秒的流逝,两个多小时过去了,女神还没有出现,小明看了下表,时针和分针的位置正好跟开始等的时候互换,请问小明一共等了女神多少分钟() 172 166 165 150 超简单的思路 设一圈为1 设时针和分针距离x(时针顺时针走x圈到分针位置),则 分针走了3-x圈,时针走了x圈 因为分针移动60格时针移动5格,两针的速度比是分针:时针=12:1 所以3-x=12x,x=3/13 所以分针走了36

程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's"算一个单词,长度为4.注意,行中可能出现连续的空格. 输入格式: 输入在一行中给出一行文本,以'.'结束,结尾的句号不能计算在最后一个单词的长度内. 输出格式: 在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后

POJ C++程序设计 编程题#3:计算数列平方和

编程题#3:计算数列平方和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 1024kB 描述 请写出sum函数,使其可以计算输入数列的平方和. #include <iostream> using namespace std; // 在此处补充你的代码 int sqr(int n) { return n * n; } int main() { int t, n, a[0x100

【模拟,时针分针秒针两两夹角】【没有跳坑好兴奋】hdu - 5387 (多校#8 1008)

算是最好写的一道题了吧,最近模拟没手感,一次过也是很鸡冻o(* ̄▽ ̄*)o 注意事项都在代码里,没有跳坑也不清楚坑点在哪~ 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<vector> 5 #include<cmath> 6 #include<sstream> 7 #include<iostream> 8 using namesp

编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?

#include<stdio.h> /*函数is_leap_year()的返回值是判断该年是否闰年*/ int is_leap_year(int year) { int leap; if(year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0; return leap; } /*函数len_of_month()的返回值为某年year的某月month的天数*/ int len_of_month(int year,int m

编程题:计算:s=a+3*-2/(int)(a+b)-12的结果,其中a=1.7,b=2.4。

#include<stdio.h> void main() { float a=1.7,b=2.4,s; s=a+3*-2/(int)(a+b)-12; printf("result is %f\n",s); } 运行结果: 编程题:计算:s=a+3*-2/(int)(a+b)-12的结果,其中a=1.7,b=2.4.,布布扣,bubuko.com

POJ C++程序设计 编程题#5 计算数组的低3位之和

编程题#5:计算数组的低3位之和 来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 总时间限制: 1000ms 内存限制: 1024kB 描述 输入一个正整数构成的数组a[0], a[1], a[2], ... , a[n-1], 计算它们的二进制低3位之和. #include <iostream> #include <vector> #include <algorithm> using nam