题意:给出了一个钟表上的准确时间,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; }
时间: 2024-10-13 08:06:31