题目大意:有两个钟表,开始时都指向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
",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
",m,k,hh,mm);
}
return 0;
}