洛谷 P4549 【模板】裴蜀定理

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

(1)证明方程ax+by=gcd(a,b)(a,b为常数;a>0,b>0;a,b,x,y为整数)有解:
参考https://blog.csdn.net/discreeter/article/details/69833579
([x]表示x向下取整)
令d=gcd(a,b)
可得d|a,d|b,d|(ax+by)
设s是(ax+by)得到的数中最小正元素
设s=a*x1+b*y1
设q=[a/s]
则r=a%s=a-[a/s]*s=a-q*(a*x1+b*y1)=a*(1-q*x1)+b*(-q*y1)
显然0<=r<s,因此显然r=0
因此s|a
同理s|b
所以s|d
而由于d|(a*x1+b*y1)
所以d|s
所以d=s
(由(1)容易推断,当gcd(a,b)|c时,ax+by=c有解)

(2)证明ax+by=c(条件同上)有解,则gcd(a,b)|c
不证了。。看起来就是对的

(3)由(1),(2)可得,方程ax+by=c(a,b,c为常数;a>0,b>0;a,b,c,x,y为整数)有解,当且仅当gcd(a,b)|c

可以发现以上证明对于任意个数的数也成立(结论中,gcd(a,b)|c中gcd(a,b)变成gcd(a,b,c,d,..))

所以此题只要输出n个数的gcd即可

from math import *
n=int(input())
data=input().split(' ')
an=0
for i in range(n):
    an=gcd(an,int(data[i]))
print(an)
原文地址:https://www.cnblogs.com/hehe54321/p/9792118.html