• 裴蜀定理


    #include <bits/stdc++.h>
    #define lowbit(x) x&-x
    using namespace std ;
    typedef long long LL;
    inline LL read(){ LL x=0; int f=1; char ch=getchar();
        while(!isdigit(ch)) { if (ch=='-') f=-1; ch=getchar(); }
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return x*f;
    }
    int n;
    int ans;
    signed main() {
        n=read();
        for(register int i=1;i<=n;i++) {
            int tmp=read();
            if(!tmp) tmp*=-1;
            ans = __gcd(ans , tmp);
        }
        cout << abs(ans) << endl ;
        return 0;
    }

    裴蜀定理内容

    ax+by=c,xZ,yZ∗成立的充要条件是gcd(a,b)c。Z∗表示正整数集。

    证明

    s=gcd(a,b),显然sa,并且sb

    又因为x,yZ

    所以sax,sby

    显然要使得之前的式子成立,则必须满足cab的公约数的倍数

    又因为xy是正整数

    所以c必然是a,b最大公约数的倍数。

    因此,证得该定理成立

    针对这道题

    上述裴蜀定理针对的是两个变量。那么我们很自然的就想到这样的定理能否推广到多个变量呢?显然可以,证明方法同上。

    那这个题不就是推广后的定理的裸题吗QAQ。我们只需要对这所有的数字求一个gcd,值得注意的是不要忘记数据中有负数,要将其变为正数再求gcd。

    不存在十全十美的文章 如同不存在彻头彻尾的绝望
  • 相关阅读:
    php lesson1
    微信红包算法java版本
    spring注解
    Java时间戳
    集成环信 服务器端遇见的坑:关于Request body is invalid.解决
    环信java后台发送消息时提示msg 应该为JSONObject 的坑
    jboss设置允许外网访问
    redis实现单点登录
    qq在线客服
    图片纯css控制宽高比
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/10526804.html
Copyright © 2020-2023  润新知