关于时针和分钟重合次数的计算

在网上看到一道这样的题目。

在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

/*
1、一天是86400秒,表盘是半天一个周期,则只需要计算半天时间为43200秒 
2、分针和时针重合,即分针和时针的角度是一样。
3、秒针走一秒,分针走360°/60 = 6°,时针走360°/43200
4、中午12点,则算是重回原点。
*/
declare @num int
select @num = 0
while @num <= 43200  /*循环次数,秒针走的次数*/
begin
    if(convert(numeric(18,3),360.0/43200*case when @num = 43200 then 0 else @num end) = convert(numeric(18,3),((@num*1.00/60)%60)*6) )  /*计算秒钟每走一秒,则时针和分钟相应的走的角度*/
	begin
	    print ‘当前秒数:‘+cast(@Num as char(6)) + ‘时针和分针重合,时间是 ‘ + cast(@Num as char(6)) + ‘  ‘
		                                                       + left(‘00‘,2-len(@Num/3600))+cast(@Num/3600 as varchar(3)) + ‘:‘ /*重合时间时,时针*/
		                                                       + left(‘00‘,2-len((@Num/60)%60))+cast(((@Num/60)%60) as varchar(3)) + ‘:‘ /*重合时间时,分针*/
															   + left(‘00‘,2-len(@Num%60))+cast((@Num%60) as varchar(4)) /*重合时间时,秒针*/
	end
    --print cast(@Num as char(6)) + ‘   时针: ‘ + cast(convert(numeric(18,2),360.0/43200*@Num) as varchar(50)) + ‘      分针:‘+cast(convert(numeric(18,2),((@num*1.00/60)%60)*6) as varchar(50))
    select @Num = @Num + 1
end

结果如下:

当前秒数:0     时针和分针重合,时间是 0       00:00:00
当前秒数:43200 时针和分针重合,时间是 43200   12:00:00

因此在一天24小时中,最开始走计算一次,中午12点计算一次,凌晨12点也是0点再次计算一次,则算三次

时间: 2024-10-11 02:56:13

关于时针和分钟重合次数的计算的相关文章

关于归并排序元素之间比较次数的计算

问题:3,1,4,1,5,9,6,5 通过归并排序对它进行从大到小的排序 要进行多少次数组元素之间的比较?网站找的解决方法:第一趟合并(3,1),(4,1),(5,9),(5,6) ,元素之间共比较了4次;第二趟合并(4,3,1,1),(9,6,5,5),元素之间共比较了6次;为什么是6次?(3,1)和(4,1)是怎么比较得到(4,3,1,1)的呢?难道是插入排序?不是的.首先我把Left=(3,1),Right=(4,1),tmp数组用于排序好的结果,目前为空,也就是().用Left[0],,

关于插入排序元素之间比较次数的计算

问题:3,1,4,1,5,9,6,5  通过归并排序对它进行从小到大的排序  要进行多少次数组元素之间的比较? [3] 1 4 1 5 9 6 5 第一次排序结果:[1 3] 4 1 5 9 6 5; //新加入的3和1比较,比较次数1次 第二次排序结果:[1 3 4] 1 5 9 6 5; //新加入的4和3比较,比较次数1次 第三次排序结果:[1 1 3 4]  5 9 6 5; //新加入的1分别和4 3 1 比较,比较次数3次 第四次排序结果:[1 1 3 4 5] 9 6 5; //新

正则表达式关于次数的计算

表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 其中,* + ?容易混淆,可以借用0与1的关系来助记 * 代表重复多于0 * 1次 + 代表重复多于0 + 1次 ?代表重复0或者1次 正则表达式关于次数的计算

关于递归次数的计算

有这样一个题目: 递归函数: 1 int x(int n) 2 { 3 if(n<=3) 4 { 5 return 1; 6 } 7 else 8 { 9 return x(n-2)+x(n-4)+1; 10 } 11 } 计算x(x(8))递归调用次数. 大多数可能觉得这是一个很简单的题目,的确很简单. 但是要想在没有编译器的情况下正确的算出这个递归 调用次数其实还是需要点耐心. x(x(8))我们先计算x(8),我们用count=0计数递归调用次数 1.x(8)=x(6)+x(4)+1 co

云计算与大数据系列:1分钟看懂弹性计算云EC2的关键技术

一.地理区域和可用区域 EC2系统中包含多个地理区域,而每个地理区域中又包含多个可用区域.为了确保系统的稳定性,用户最好将自己的多个实例分布在不同的可用区域和地理区域中. 二.EC2的通信机制 EC2的实例一旦被创建就会动态地分配公共IP地址和私有IP地址 私有IP地址由动态主机配置协议(DHCP)分配产生 三.弹性负载平衡 弹性负载平衡功能允许EC2实例自动分发应用流量,从而保证工作负载不会超过现有能力,并且在一定程度上支持容错. 弹性负载平衡功能可以识别出应用实例的状态,当一个应用运行不佳时

360笔试-关于手表指针

关于手表指针的算法思考 我们都知道手表上又时分秒三个指针,时针可以决定分针和秒针的位置,分针可以决定秒针的位置.为了简单起见,现在假设只有时针和分针. 现假设某一刻为H:M,(H=0,1,2-11:M=0,1,2..59),那么在该时刻分针的角度(距离起点0点)为:,时针的角度:, 那么时针和分针的夹角: 问题1.时针和分针重合的时刻? 令,化简之后得: 由此可见,每个小时之中都有一个时刻满足时针和分钟重合,注意当H=11的时候,M=60,也就是12点,即0点.所有满足时针分针重合的时刻为: [

关于数组内排序计算次数的问题

不废话,直接上代码. 1.获取5个数中的最大数: int[] score = {66,77,88,65,88}; int max = score[0]; for(int i=0;i<score.length-1;i++){ if(max<score[i+1]){ max = score[i+1]; } } 由此可以看出,计算的总次数为 计算个数   2   3   4    5  ... n 计算次数   1   2   3    4  ... n-1 最小数次数一样. 2.将6个数从小到大排

算法的时间复杂度计算

参考自:此文 一.循环执行次数的计算 1.双重循环 for(int i=1;i<=n;i++) // 外层n次 for(int j=1;j<=i;j++) // 内层i次 f(); 总次数=1+2+3+..+n=(1+n)*n/2 时间复杂度=O(n^2) 2.三重循环 for(int i=1;i<=n;i++) // 外层n次 for(int j=1;j<=i;j++) // 内层为双重循环,执行次数为(1+i)*i/2=i^2/2+i/2 for(int k=1;k<=j

计算两条直线的交点(C#)

从其他地方看到的源码是有问题的. /// <summary> /// 计算两条直线的交点 /// </summary> /// <param name="lineFirstStar">L1的点1坐标</param> /// <param name="lineFirstEnd">L1的点2坐标</param> /// <param name="lineSecondStar"