// 扩展欧几里得算法 
// 先求出一个解 再求出区间 [x1,x2]有几个整数符合条件
// 需要注意的是 水平和垂直2种情况的处理 还有正数和负数取整的细微差别
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 1000010
#define maxm 48010
#define LL long long
LL ax,ay,bx,by;
LL a,b,c;
LL d,x,y;
void extendGcd(LL a,LL b){
if(b==){
d=a;
x=;
y=;
}else{
extendGcd(b,a%b);
LL t=x;
x=y;
y=t-a/b*y;
}
}
LL lt(double p){
if(p>){
LL x=p+0.05;x=x*;
LL y=(p+0.05)*;
if(x==y) return x/;
return x/+;
}
else{
return (LL)(p-0.05);
}
}
LL rt(double p){
if(p>=)
return (LL)(p+0.05);
else {
LL x=p-0.05;x=x*;
LL y=(p-0.05)*;
if(x==y) return x/;
return x/-;
}
}
LL get(double d){
if(d>=) return (d+0.05)*;
else return (d-0.05)*;
}
int main(){ int T;
double x1,y1,x2,y2;
LL ax,ay,bx,by;
LL a,b,c;
scanf("%d",&T);
while(T--){
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
ax=get(x1);ay=get(y1);
bx=get(x2);by=get(y2);
if(ay==by){
if(ay%) { printf("0\n");continue;}
LL lx=lt(min(x1,x2)),rx=rt(max(x1,x2));
if(lx==rx&&ay%){printf("0\n");continue;}
printf("%lld\n",rx-lx+);
continue;
}
else if(ax==bx) {
if(ax%) { printf("0\n");continue;}
LL ly=lt(min(y1,y2)),ry=rt(max(y1,y2));
if(ly==ry&&ax%){printf("0\n");continue;}
printf("%lld\n",ry-ly+);
continue;
} a=(ay-by)*;
b=(bx-ax)*;
c=(bx-ax)*ay-(by-ay)*ax; extendGcd(a,b);
if(c%d!=){printf("0\n");continue;}
x=x*(c/d);
LL m=b/d;
LL lx=lt(min(x1,x2)),rx=rt(max(x1,x2));
if(m<) m=-m;
x=x-(x-lx)/m*m;
x-=m;
while(x<lx)
x+=m;
LL k=(rx-x)/m;
while(x+k*m<=rx) k++;
printf("%lld\n",k);
}
return ;
}

uva 11768的更多相关文章

  1. UVA 11768 - Lattice Point or Not(数论)

    UVA 11768 - Lattice Point or Not option=com_onlinejudge&Itemid=8&page=show_problem&categ ...

  2. UVA 11768 Lattice Point or Not(扩展欧几里德)

    将直线转化为ax + by = c的形式,然后扩展欧几里得求在[x1, x2]之间的解 对直线与坐标轴平行的特判 调试了好长时间,注意: 1 正负数转化为整型的处理 2 注意判断有无解 #includ ...

  3. UVA 11768 - Lattice Point or Not

    首先本题需要用到扩展欧几里得算法…… 关于exgcd算法的一点简略证明: 那么,对于函数exgcd(a,b)=(d,x,y),其中d满足d=gcd(a,b); (x,y)满足ax+by=d; 则exg ...

  4. Lattice Point or Not UVA - 11768(拓展欧几里得)

    原文地址:https://www.cnblogs.com/zyb993963526/p/6783532.html 题意: 给定两个点A(x1,y1)和B(x2,y2),均为0.1的整数倍.统计选段AB ...

  5. UVa 11768 格点判定(扩展欧几里得求线段整点)

    https://vjudge.net/problem/UVA-11768 题意: 给定两个点A(x1,y1)和B(x2,y2),均为0.1的整数倍.统计选段AB穿过多少个整点. 思路: 做了这道题之后 ...

  6. UVA - 11768 Lattice Point or Not (扩展欧几里得)

    求一条线段上有多少个整点. 是道扩欧基础题,列出两点式方程,然后分四种情况讨论即可.但细节处理较多很容易写挫(某zzWA了十几发才过掉的). 由于数据精度较小,浮点数比较没有用eps,直接==比较了. ...

  7. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  8. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  9. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

随机推荐

  1. jquery获取标签内容,编辑内容

    一.获取页面元素 三种方式获取页面中元素的内容. input标签使用:.val()获取 标签下的html及文本内容:.html() 仅获取标签下的纯文本内容:.text() <head> ...

  2. AngularJS 基础

    1. AngularJs 是一个JS 框架,是一种基于MVC的设计模式 2. script 需引用 <script src="angular.min.js">,安装包 ...

  3. who is in front of me 解题报告

    题目描述:N(1<=N<=50005)个学生站成一个纵队,每个人只能看到前面身高比他高(严格大于)的人 求所有人中能看到的最大人数 分析:对于某个人A,设前面第一个身高比他高的人是B.如果 ...

  4. hdu 1524 A Chess Game 博弈论

    SG函数!! 代码如下: #include<stdio.h> #include<cstring> #define I(x) scanf("%d",& ...

  5. 如何正确学习JavaScript

    不要这样学习JavaScript 不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法.或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实 ...

  6. [Unity菜鸟] FBX模型动画提取

    角色已经人形化(Humanoid)了,那它的动画可以用在其它的模型上了也就是可以共用一套模型动画了,但是你有没有发现那动画是和fbx模型绑在一起的,没关系你可以选中这几个动画文件按Contrl+D就可 ...

  7. 50. Pow(x, n)

    题目: Implement pow(x, n). 链接: http://leetcode.com/problems/powx-n/ 题解: 使用二分法求实数幂,假如不建立临时变量halfPow,直接r ...

  8. Maven常用命令(转载)

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...

  9. javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint

    使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty  和@NotBlank 区别 @NotEmpty 用在集合类上面@NotBlank 用 ...

  10. win7右下角声音图标不见的解决方法

    1.启动任务管理器 2.在进程选项卡里找到"explorer.exe",然后结束该进程 3.接着点击应用程序选项卡,点击新任务 4.输入explorer.exe,然后点击确定 5. ...