运行要求
运行时间限制: 2sec
内存限制: 1024MB
未经允许,不得许转载
原题目链接
题目
有一个时针,分针分别长为A厘米和B厘米的钟表。
时针和分针的一端被固定在同一个固定点。以这个固定点为中心,时针,分针按照一定的角速度旋转。时针每12小时转一周,分针每60分钟转一周。
0点的时候,时针和分针重合,求正好H时M分的时候,时针和分针的另外两个端点的距离
输入前提条件
- 所有的输入均为整数
- 1<=A,B<=1000
- 0<=H<=11
- 0<=M<=59
输入
输入按照以下形式标准输入
AA BB HH MM
输出
去掉单位,和正确答案的误差保持在10^-9以下的话为正确答案
例1
输入
3 4 9 0
输出
5.00000000000000000000
如图所示,两个针的端点的距离是5
例1
输入
3 4 10 40
输出
4.56425719433005567605
两根针如图所示,两根针按照一定的角速度旋转
解题思路
直角坐标系解析几何,欧式距离求法
详细稍后补上
先贴上代码
代码
import math
A, B, H, M = map(int,input().split())
def calculate(a, b, h, m):
hradians = ((h % 12) / 12)*360 + (((m/60) % 12) / 12)*360
mradians = (m / 60) * 360
hx = a * math.sin(math.radians(hradians))
hy = a * math.cos(math.radians(hradians))
mx = b * math.sin(math.radians(mradians))
my = b * math.cos(math.radians(mradians))
print(distance(hx,hy,mx,my))
def distance(x1,y1,x2,y2):
return math.sqrt(abs(x1-x2)**2 + abs(y1-y2)**2)
calculate(A, B, H, M)
import math
A, B, H, M = map(int,input().split())
def calculate(a, b, h, m):
hradians = ((h % 12) / 12)*360 + (((m/60) % 12) / 12)*360
mradians = (m / 60) * 360
hx = a * math.sin(math.radians(hradians))
hy = a * math.cos(math.radians(hradians))
mx = b * math.sin(math.radians(mradians))
my = b * math.cos(math.radians(mradians))
print(distance(hx,hy,mx,my))
def distance(x1,y1,x2,y2):
return math.sqrt(abs(x1-x2)**2 + abs(y1-y2)**2)
calculate(A, B, H, M)
总结
这道题是一道几何体
解析几何或者纯几何的求法
※ 另外,我会在我的微信个人订阅号上推出一些文章,欢迎关注
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。