首页 > 其他分享 >2022 CCPC 桂林 E

2022 CCPC 桂林 E

时间:2022-12-05 01:33:18浏览次数:67  
标签:int CCPC exgcd x2 桂林 2022 y1 x1 向量

E. Draw a triangle

题链
不难发现可以用叉积来求
我们假设A指向B的向量为(-b,a) 注意这里是 -b a
假设A指向C的向量为(x,y)
题目给出了AB坐标 我们就知道了第一个向量 我们只需要求x,y这个向量就可以了
S=1/2(ax+by)这里面就是一个线性同余了 他的最小值为gcd(a,b)
我们只需要exgcd求出一组x y即可
要是a b为负数也没关系 我们可以先给系数
(-1)就可以了
最后再加上x1 y1即可
最后的最后记得特判ab为0的情况

void exgcd(int a,int b,int &x,int &y){
    if(!b){x=1,y=0;return;}
    else {exgcd(b,a%b,y,x),y-=a/b*x;}
}
void solve(){
    int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
    if(x1==x2){
        cout<<x1+1<<" "<<y1<<endl;
        return;
    }
    if(y1==y2){
        cout<<x1<<" "<<y1+1<<endl;
        return;
    }
    int a=y2-y1,b=x1-x2;
    int x,y,sx=1,sy=1;
    if(a<0){
        a=-a;
        sx=-1;
    }
    if(b<0){
        b=-b;
        sy=-1;
    }
    exgcd(a,b,x,y);
    cout<<x1+x*sx<<' '<<y1+y*sy<<endl;
}

标签:int,CCPC,exgcd,x2,桂林,2022,y1,x1,向量
From: https://www.cnblogs.com/ycllz/p/16951316.html

相关文章