题意:给出了一个钟表上的准确时间,hh:mm:xx,问多少秒后时针和分针能够重合。
题解:计算此时分针和时针距离0点的准确角度hd与md,然后每秒分针转动mm = 0.1度,时针转动hh = 1/120,然后如果要分针与时针重合,hd + hh * x = md + mm * x,当hd > md时x即为解,否则先让分针走到0点,然后时针加上相应角度继续用上面的式子计算x。
#include <stdio.h>
double a, b, c;
double hh = 1.0 / 120; //1秒时针走的角度
double mm = 0.1; //1秒分针走的角度
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%lf:%lf:%lf", &a, &b, &c);
if (a >= 12)
a = a - 12;
double hd = hh * (c + b * 60 + a * 3600);
double md = mm * (c + b * 60);
if (hd - md > 1e-9)
printf("%.6lf\n", (hd - md) / (mm - hh));
else {
double temp = (360.0 - md) / mm;
hd = hd + temp * hh;
md = 0;
printf("%.6lf\n", temp + (hd - md) / (mm - hh));
}
}
return 0;
}