zoukankan      html  css  js  c++  java
  • 线段上格点的个数

    2016.1.25

    试题描述

    给定平面上的两个格点P1=(x1,y1)和P2=(x2,y2),线段P1P2上,除了P1和P2以外一共有多少个格点?

    输入
    一行包括四个数,分别为x1,x2,y1和y2,两两之间用一个空格分隔。
    输出
    输出一个数,表示题目描述的格点的个数。
    输入示例
    1 5 11 3
    输出示例
    3
    其他说明
    数据范围:-10^9<=x1,x2,y1,y2<=10^9

    算出横坐标差纵坐标差,辗转相除一发,注意判负,还有特殊情况(两点重合)

    AC代码:

    #include<iostream>
    using namespace std;
    long long gcd(long long a,long long b)
    {
        if(!b) return a;
        return gcd(b,a%b);
    }
    int main()
    {
        int x1,x2,y1,y2;
        scanf("%d%d%d%d",&x1,&x2,&y1,&y2);
        long long x=x2-x1,y=y2-y1;
        if(x<0) x=-x;if(y<0) y=-y;
        if(!x&&!y) printf("0");
        else printf("%lld",gcd(x,y)-1);
    
    }
    View Code
  • 相关阅读:
    简单的逻辑学 笔记
    中国古代文化常识 笔记
    Docker 使用官方镜像
    Docker 入门 之基本命令
    Windows.form增删改查
    自定义控件
    LISTVIEW
    窗体布局
    计算器
    登录
  • 原文地址:https://www.cnblogs.com/16er/p/5158433.html
Copyright © 2011-2022 走看看