AtCoder Context ABC 168- C - : (Colon)

运行要求
运行时间限制: 2sec
内存限制: 1024MB
未经容许,不得许转载
原题目连接微信

题目
有一个时针,分针分别长为A厘米和B厘米的钟表。
时针和分针的一端被固定在同一个固定点。以这个固定点为中心,时针,分针按照必定的角速度旋转。时针每12小时转一周,分针每60分钟转一周。
0点的时候,时针和分针重合,求正好H时M分的时候,时针和分针的另外两个端点的距离less

输入前提条件spa

  • 全部的输入均为整数
  • 1<=A,B<=1000
  • 0<=H<=11
  • 0<=M<=59

输入
输入按照如下形式标准输入code

AA BB HH MM

输出
去掉单位,和正确答案的偏差保持在10^-9如下的话为正确答案blog


例1
输入内存

3 4 9 0

输出get

5.00000000000000000000

如图所示,两个针的端点的距离是5
when_a_nameless_star_falls_into_the_sky.pnginput

例1
输入it

3 4 10 40

输出class

4.56425719433005567605

when_flower_petals_flutter.png
两根针如图所示,两根针按照必定的角速度旋转

解题思路
直角坐标系解析几何,欧式距离求法
详细稍后补上
先贴上代码

代码

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)

总结
这道题是一道几何体
解析几何或者纯几何的求法

※ 另外,我会在个人微信我的订阅号上推出一些文章,欢迎关注
二维码.jpg

相关文章
相关标签/搜索