首页 > 其他 > 详细

acdream 1686(数学)

时间:2015-04-15 23:20:36      阅读:237      评论:0      收藏:0      [点我收藏+]

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


acdream 1686(数学)

原文:http://blog.csdn.net/hyczms/article/details/45066545

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!