首页 > 其他 > 详细

【模板】裴蜀定理

时间:2019-07-10 21:23:20      阅读:98      评论:0      收藏:0      [点我收藏+]

[Time Gate]

https://www.luogu.org/problemnew/show/P4549

【解题思路】

数论+最大公约数+不定方程

裴蜀定理内容及简要证明

ax+by=c(xy为任意整数)成立的充要条件是c是gcd(a,b)的倍数

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

又因为x,y∈Z∗

所以s∣ax,s∣by

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

又因为x和y是正整数

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

因此,证得该定理成立

多个数即可同理

【code】

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 int n,k,ans;
 6 inline int gcd(int a,int b){
 7     if(b==0)return a;
 8     return gcd(b,a%b);
 9 }
10 int main(){
11     //freopen("4549.in","r",stdin);
12     //freopen("4549.out","w",stdout);
13     scanf("%d",&n);
14     for(register int i=1;i<=n;i++){
15         scanf("%d",&k);
16         if(k<0)k*=(-1);
17         ans= gcd(ans,k);
18     }
19     printf("%d\n",ans);
20     return 0;
21 }

 

【模板】裴蜀定理

原文:https://www.cnblogs.com/66dzb/p/11166288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!