zoukankan      html  css  js  c++  java
  • 编程题:计算时针与分针的角度

    问题描述

    给定时、分(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;
    }
    
    
  • 相关阅读:
    在游戏中充分利用可编程的GPU
    坐标变换
    深入理解GPU Architecture(上)
    RV870和GT300的一些猜测
    深入理解Intel Core Microarchitecture
    CGDC见闻
    hdu 1517 K(2~9)倍博弈
    hdu 2177 威佐夫博弈+输出使你胜的你第1次取石子后剩下的两堆石子的数量
    坚持住
    真正体会到一个ac的快感
  • 原文地址:https://www.cnblogs.com/darknessplus/p/10687130.html
Copyright © 2011-2022 走看看