UVA-10339 Watching Watches

题目大意:有两个钟表,开始时都指向00:00,但是一个每天慢m秒,另一个每天慢k秒,问两个表再次指向同一时刻时的所指时间。精确到分钟,四舍五入。

题目解析:先求出再次指向同一时间时实际经过的天数,天数d=12*3600/abs(m-k)。然后可求每个表总共慢下来的秒数,余下不再细说,看代码。

注意:求时间和分钟的时侯最好按秒、分、时逐级求,否则易错。

 

代码如下:

# include<iostream>
# include<cstdio>
# include<cmath>
# include<algorithm>
using namespace std;
int main()
{
    int m,k;
    while(~scanf("%d%d",&m,&k))
    {
        if(m==k){
            printf("%d %d 12:00\n",m,k);
            continue;
        }
        int c=fabs(m-k);
        double d=12.0*3600.0/c;
        long long n=d*(24*3600-m);
        n%=43200;
        int mm=n/60;
        n%=60;
        if(n>=30)
            ++mm;
        int hh=mm/60;
        mm%=60;
        if(hh==0)
            hh=12;
        printf("%d %d %02d:%02d\n",m,k,hh,mm);
    }
    return 0;
}
posted @ 2015-07-24 08:35  20143605  阅读(232)  评论(0编辑  收藏  举报