• [ACM] 九度OJ 1553 时钟


    时间限制:1 秒

    内存限制:128 兆

    特殊判题:

    提交:1733

    解决:656

    题目描写叙述:

    如图,给定随意时刻,求时针和分针的夹角(劣弧所相应的角)。

    输入:

    输入包括多组測试数据。每组測试数据由一个按hh:mm表示的时刻组成。

    输出:

    对于每组測试数据,输出一个浮点数,代表时针和分针的夹角(劣弧相应的角),用角度表示。结果保留两位小数。

    例子输入:
    03:00
    14:45
    例子输出:
    90.00
    172.50
    来源:
    2014年王道论坛计算机考研机试全真模拟考试


    解题思路:

    求时针和分针的夹角(劣弧所相应的角)。须要注意的是分针指的一定是整刻度,而时针不一定。由于分针走的同一时候,时针也在微小的走,所以要求出时针偏离整刻度的偏移量。

    分针指的刻度为0到60,把时针也换成同样的格式h*5就能够了。每一个单位刻度代表6度(360除以60)然后求劣弧所相应的角,两种情况 , abs( h- m )  和  60- max (h,m) + min(h,m) 。取两者的最小值就能够了。

    代码:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    double h,m;
    char c;
    
    int main()
    {
        while(cin>>h)
        {
            cin>>c>>m;
            if(h>12)
                h-=12;
            h*=5;//换成和分针数字一样的计数标准。0到60,每一个刻度代表的角度为360/60=6
            h=h+(m*1.0/60)*5;//计算时针偏离整点的偏移量
            if(h<m)//为了方便。始终让时针为大数字
            {
                double temp;
                temp=h;
                h=m;
                m=temp;
            }
            double result;
            if(h-m<60-h+m)//时针和分针所组成的优弧和劣弧,取劣弧
                result=h-m;
            else
                result=60-h+m;
            result*=6;//每一个刻度为6度
            cout<<setiosflags(ios::fixed)<<setprecision(2)<<result<<endl;
        }
        return 0;
    }
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    hdu 4858 项目管理 图的分块
    hdu 3123 GCC 阶乘
    hdu 3065 病毒侵袭持续中 AC自动机
    SPOJ
    hdu 3033 I love sneakers! 分组背包
    zoj 1450 Minimal Circle 最小覆盖圆
    hdu 3007 Buried memory 最远点对
    Azure 虚拟机常见问题-下
    Azure 虚拟机常见问题-上
    关于Windows Azure的常见问题-执行与维护FAQ
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4729238.html
Copyright © 2020-2023  润新知