博客
关于我
LightOJ - 1077 How Many Points
阅读量:808 次
发布时间:2023-01-31

本文共 1113 字,大约阅读时间需要 3 分钟。

给定两个格点,求它们之间线段上的格点数目。这个问题可以通过计算两个点坐标差的最大公约数(gcd)来解决。具体来说,线段上的格点数目等于gcd(abs(x1-x2), abs(y1-y2)) + 1。

步骤解释:

  • 问题分析:给定两个点 (x1, y1) 和 (x2, y2),我们需要计算连接它们的线段上包含多少个格点。根据贝祖定理,两个点之间的线段上格点数目为它们坐标差的gcd加1。

  • 公式应用:计算两点坐标差的绝对值的gcd,然后加1即可得到结果。公式为:[\text{格点数目} = \text{gcd}(|x1 - x2|, |y1 - y2|) + 1]

  • 编程实现

    • 包含必要的头文件。
    • 定义长长整数类型。
    • 定义gcd函数,使用欧几里得算法。
    • 读取输入,处理每个测试用例,计算并输出结果。
  • 代码示例:

    #include 
    #include
    #include
    #include
    using namespace std;typedef long long LL;LL gcd(LL a, LL b) { return b == 0 ? a : gcd(b, a % b);}int main() { int T; scanf("%d", &T); for (int t = 1; t <= T; t++) { LL x1, y1, x2, y2; scanf("%lld%lld%lld%lld", &x1, &y1, &x2, &y2); LL dx = abs(x1 - x2); LL dy = abs(y1 - y2); LL g = gcd(dx, dy); printf("Case %d: %lld\n", t, g + 1); } return 0;}

    代码解释:

    • 头文件包含<stdio.h><string.h><iostream><algorithm>,用于基础输入输出和算法支持。
    • 类型定义typedef long long LL; 定义长长整数类型,便于处理大数。
    • gcd函数:使用递归实现欧几里得算法计算最大公约数。
    • 主函数
      • 读取测试用例数目T。
      • 对于每个测试用例,读取四个坐标值。
      • 计算坐标差的绝对值。
      • 使用gcd函数计算最大公约数。
      • 输出结果为gcd值加1。

    这个程序能够高效地解决问题,适用于多个测试用例,并且代码结构清晰,易于理解和维护。

    转载地址:http://dzwfk.baihongyu.com/

    你可能感兴趣的文章
    Photoshop脚本入门
    查看>>
    PHP
    查看>>
    Regular Expression Notes
    查看>>
    PHP $FILES error码对应错误信息
    查看>>
    PHP $_FILES函数详解
    查看>>
    PHP $_SERVER['HTTP_REFERER'] 获取前一页面的 URL 地址
    查看>>
    php &amp; 和 &amp;amp; (主要是url 问题)
    查看>>
    php -- 魔术方法 之 判断属性是否存在或为空:__isset()
    查看>>
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
    查看>>
    php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
    查看>>
    regExp的match、exec、test区别
    查看>>
    php 404 自定义,APACHE 自定义404错误页面设置方法
    查看>>
    PHP 5.3.0以上推荐使用mysqlnd驱动
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php CI框架单个file表单多文件上传例子
    查看>>
    reflow和repaint引发的性能问题
    查看>>
    php csv 导出
    查看>>