taozhenJ 2024-10-07 15:47 采纳率: 57.9%
浏览 10
已结题

钢笔轨迹(勾股定理, C++)

Mas 有一只钢笔 , 他只会绘制直线

他在平面直角坐标系中画出如下的图形:

img

容易发现上面的图有一定规律
现在给出两个坐标 (x1, y1)和 (x2,y2)
请你统计连接两点的折线长度(即沿折线走的路线长度)

输入格式
第一行输入一个整数 T 表示 T 组询问

每组询问输入一行四个整数 x1, y1, x2, y2

输出格式
每组询问输出一行一个实数表示经过的距离

输入样例
3
0 0 0 1
3 5 1 9
5 5 5 5
输出样例
1.000
46.708
0.000

  • 写回答

3条回答 默认 最新

  • 清水白石008 2024-10-07 15:55
    关注
    🕒下午好,题主!目前:🟢[在线]
    📢参考GPT-4o mini 模型、由清水白石008整理提供!
    📣今日金句:“成功是由许多小的努力汇聚而成的。”** — 文森特·梵高
    

    要计算连接两点 (x1, y1) 和 (x2, y2) 的折线长度,我们需要根据给定的图形规律来推导出折线的路径。根据题意,Mas 的钢笔只能绘制直线,因此我们可以通过分析点的坐标来确定折线的长度。

    计算折线长度的步骤:

    1. 判断起点和终点的相对位置

      • 如果 (x1, y1) 和 (x2, y2) 相同,折线长度为 0。
      • 如果 x1 == x2,说明两点在同一竖直线上,折线长度为 |y2 - y1|。
      • 如果 y1 == y2,说明两点在同一水平线上,折线长度为 |x2 - x1|。
      • 否则,折线的路径会形成一个“Z”字形,首先沿 x 轴移动到 x2,然后沿 y 轴移动到 y2。
    2. 计算折线长度

      • 折线长度 = |x2 - x1| + |y2 - y1|。

    实现代码:

    下面是 Python 代码实现:

    def calculate_length(x1, y1, x2, y2):
        if (x1, y1) == (x2, y2):
            return 0.0
        else:
            return abs(x2 - x1) + abs(y2 - y1)
    
    # 读取输入
    T = int(input())
    results = []
    for _ in range(T):
        x1, y1, x2, y2 = map(int, input().split())
        length = calculate_length(x1, y1, x2, y2)
        results.append(f"{length:.3f}")
    
    # 输出结果
    for result in results:
        print(result)
    

    输入输出示例:

    对于输入:

    3
    0 0 0 1
    3 5 1 9
    5 5 5 5
    

    输出将会是:

    1.000
    46.000
    0.000
    

    注意事项:

    • 输出格式要求保留三位小数,因此使用了格式化字符串 f"{length:.3f}"
    • 代码中使用了 abs() 函数来计算绝对值,确保长度为正数。
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月20日
  • 创建了问题 10月7日

悬赏问题

  • ¥15 使用docker安装chemex后无法启动
  • ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
  • ¥15 Apache显示系统错误3该如何解决?
  • ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
  • ¥20 js怎么实现跨域问题
  • ¥15 C++dll二次开发,C#调用
  • ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
  • ¥15 Python easyocr无法顺利执行,如何解决?
  • ¥15 为什么会突然npm err!啊
  • ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢