360笔试-关于手表指针

关于手表指针的算法思考

我们都知道手表上又时分秒三个指针,时针可以决定分针和秒针的位置,分针可以决定秒针的位置。为了简单起见,现在假设只有时针和分针。

现假设某一刻为H:M,(H=0,1,2…11;M=0,1,2..59),那么在该时刻分针的角度(距离起点0点)为:,时针的角度:

那么时针和分针的夹角:

问题1.时针和分针重合的时刻?

,化简之后得:

由此可见,每个小时之中都有一个时刻满足时针和分钟重合,注意当H=11的时候,M=60,也就是12点,即0点。所有满足时针分针重合的时刻为:

[0:0]、[1:(05-06)]]、[2:(10-11)]…[11:60]即[12:0]共有11个时刻

由于没有考虑秒钟,如在[1:(05-06)]]时刻,时针和秒针完全重合在05分和06分之间。

问题2.时针和分钟互换位置,过了多久?

时刻1为:h1:m1,时刻2为:h2:m2,令D1=D2,假设h2>h1,则必然有m1<m2。化简的到:

此外还有,当时针运行到分钟处:,分针运行到时针处:

,化简整理得:

可见这样的时刻答案应该不止一个,但当在特定情况下入h2-h1=2,360笔试中是两个小时后,问总共经历了多少分钟?三元一次方程应该比较好求解吧?

时间: 2024-10-15 18:25:58

360笔试-关于手表指针的相关文章

360笔试题目

记得本科的时候算法课上看到过这个题目,当时没有做出来,今天做360笔试的时候竟然仍然没做出来,真蛋疼.回来研究了半天,我擦,两个小时做那么多题目,这个肯定做不出来. 题目: 大意是:给定一个字符串S:"BLFBFSYDLEAKLFBYM",和一个关键字T:"LBY",求出在S中包含T的最小字符串?那么应该求出最小字符串:"LFBY" 思路一:遍历T,再遍历S.(咋一看是这样,但是操作起来比较麻烦,我也没实现) 思路二:分别求出关键字T中第一个字符

**360 笔试 登山者行走步数

360 笔试 登山者的步数 分析代码如下: #include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int n = 100; typedef struct Mountains { int begin; int end; int height; /*bool

360笔试编程题

360笔试题目: C++简单实现: 1 #include <stdio.h> 2 #include <iostream> 3 #include <math.h> 4 #include <sstream> 5 #include <cstring> 6 #include <vector> 7 #include <algorithm> 8 9 using namespace std; 10 11 12 const int MAX

[C/C++基础--笔试突击] 7.指针与引用

概述: 比较抽象的但又很有用的东西 0.0 void*指针:可以保存任何类型对象的地址. 指向指针的指针 函数指针 7.1 指针 一个有效的指针必然是一下三种状态之一: 1)保存一个特定对象的地址: 2)指向某个对象后面的另一个对象 3)0值. 若指针保存0值,表明它不指向任何对象.未初始化的指针是无效的,直到给该指针赋值后,才可使用. 注:*p++和(*p)++不等价,单目运算符*的优先级比++高,故*p++先完成取值操作,然后对指针地址执行++操作,而(*p)++是首先执行屈指操作,然后对该

【C语言笔试复习】指针数组和数组指针

这周开始做C语言笔试卷,什么嘛!考的都是概念,各种细节,虽然貌似书上都能找到,但我还真不清楚...顿时又有一种我C语言学的好渣的感觉 T_T 好了,说下在[上机实验蓝皮书背后,综合测试题二]中难到的2道题,这两道题使得你对[指针数组]和[数组指针]的区别更加清晰. [例题1] 有以下程序: 1 #include <stdio.h> 2 3 int main() 4 { 5 char *s[] = {"one", "two", "three&qu

关于360笔试部分题目小结

先看看笔试的两道编程题:第一道完全没有思路,哪位有思路的,麻烦写出来,给我留言哈! 编程题一: 小B最近迷上了字符串处理技术,他设计了各种处理方式,并计算字符串的属性.这次也不例外,他定义了一种新的字符置换方式.小B研究的字符串由ASCII码字母和“.”构成,这次的研究对象是“.”.他关心的对象是字符串中出现的连续两个“.”.若每次操作把其中最开始的连续两个“.”以一个“”替代,则可以将函数f(s) 定义为使得串中不出现连续两个“.”的最小置换次数. 现考虑m个字符替换操作,每次将指定位置的字符

360笔试题目-HashMap实现

自定义一个HashMap,实现map_put,map_delete,map_get方法,要求: 1.查找时间复杂度O(1) 2.. 3.. 因为Java中自带HashMap,平时直接用,也没有考虑,前一段时间只是实现了ArrayList,Vetor,Quene,并没有考虑HashMap.笔试的时候由于时间紧,我只是在HashMap中定义两个ArrayList,一个保存Key,一个保存Value,现在想想肯定是不对的,这根本没有按照要求实现.题目的原意是让实现链表,考察操作链表的能力.回来之后,我

2016 360笔试 编程题 2

360员工桂最近申请了一个长假,一个人背着包出去自助游了. 路上,他经过了一个小镇,发现小镇的人们都围在一棵树下争吵.桂上前询问情况,得知小镇的人们正缺一个镇长,他们希望能选一个知名又公正的镇长,即,大家希望能选出一个人,所有人都认识他,但同时他不认识镇上除自己以外的其他人(在此,我们默认每个人自己认识自己).可是小镇里的人太多了,一下子大家谁也说服不了谁. “这简单啊.”桂表示.于是他一下子统计出来了镇上人们相互之间的认识关系,并且一下子找到了合适的镇长人选. 现在你手上也拿到了这样一份认识关

[360]笔试编程题

大概意思是:选镇长,规则:所选之人不认识本镇其他人:本镇其他人都认识此人. 输入: 第一行T,表示测试样例数: 每个测试样例包含: 第一行n和m,分别表示本镇人数(每个人分别用1到n的序号表示)和认识的关系数: 接下来m行表示,人与人之间的认识关系(每行两个数Ai和Bi,表示Ai认识Bi,但不能具备Bi认识Ai的关系,Ai和Bi可能相同,表示自己认识自己) 输出: 2T行,分别为T个测试样例的输出结果: 每个测试样例包含两行: 第一行表示此测试样例,镇长的可选人数: 第二行表示所有可行人的序号.