本文主要是介绍一天之内分针与时针相遇多少次,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有一道面试题:用程序求出一天之内分针与时针相遇多少次。先来分析一下:
设分针的角速度为大V,时针的角速度为小v,那么它们相遇时一定满足以下条件:
V*t = v*t + 360°*n
其中n为0到无穷大的整数
如果t以小时为单位,那么 V=360°/h,v=30°/h,进而得出:
360*t = 30*t + 360*n
360*t - 30*t = 360*n
330*t = 360*n
t = 360*n/330
而t要满足大于等于0,小于23,所以可用以下代码(以js为例)实现:
var count = 0;
var time = 24;
for(var n=0; n<100000; n++){if(360*n/330>=time){ break;}count++;
}
console.log(time+"小时内时针分针相遇:"+count+"次");
输出结果:
- "24小时内时针分针相遇:22次"
如果需要得出在什么时刻相遇,只需要如下处理:
var count = 0;
var time = 24;
for(var n=0; n<100000; n++){var tmpTime = 360*n/330;//if(tmpTime>=time){ break;}console.log("第"+tmpTime+"时时针分针相遇第"+(n+1)+"次");count++;
}
console.log(time+"小时内时针分针相遇:"+count+"次");
输出结果:
"第0时时针分针相遇第1次"
"第1.0909090909090908时时针分针相遇第2次"
"第2.1818181818181817时时针分针相遇第3次"
"第3.272727272727273时时针分针相遇第4次"
"第4.363636363636363时时针分针相遇第5次"
"第5.454545454545454时时针分针相遇第6次"
"第6.545454545454546时时针分针相遇第7次"
"第7.636363636363637时时针分针相遇第8次"
"第8.727272727272727时时针分针相遇第9次"
"第9.818181818181818时时针分针相遇第10次"
"第10.909090909090908时时针分针相遇第11次"
"第12时时针分针相遇第12次"
"第13.090909090909092时时针分针相遇第13次"
"第14.181818181818182时时针分针相遇第14次"
"第15.272727272727273时时针分针相遇第15次"
"第16.363636363636363时时针分针相遇第16次"
"第17.454545454545453时时针分针相遇第17次"
"第18.545454545454547时时针分针相遇第18次"
"第19.636363636363637时时针分针相遇第19次"
"第20.727272727272727时时针分针相遇第20次"
"第21.818181818181817时时针分针相遇第21次"
"第22.90909090909091时时针分针相遇第22次"
"24小时内时针分针相遇:22次"
还有的题目要求算出一天之内分针与时针垂直的次数有多少,
那么同理可以分析得出:
当分针与时针垂直时一定满足以下条件:
V*t = v*t + 360°*n + 90°
所以
360*t = 30*t + 360*n + 90
360*t-30*t = 360*n + 90
330*t = 360*n + 90
t = (360*n+90)/330
var count=0;
var time = 24;
for(var n=0; n<100000; n++){if((360*n+90)/330>=time){break;}count++;
}
console.log(time+"小时内时针分针垂直:"+count+"次");
输出结果:
- "24小时内时针分针垂直:22次"
这篇关于一天之内分针与时针相遇多少次的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!