P4549-[模板]裴蜀定理
正題
題目鏈接:https://www.luogu.org/problem/P4549
題目大意
一個整數序列AAA,一個整數序列XXX使得
∑i=1nAiXi=S\sum_{i=1}^n A_iX_i=Si=1∑n?Ai?Xi?=S
求SSS可能的最小正整數值。
裴蜀定理
對于方程ax+by=S(x,y∈N+)ax+by=S(x,y\in \mathbb{N}^+)ax+by=S(x,y∈N+)
的充要條件是gcd(a,b)∣Sgcd(a,b)\mid Sgcd(a,b)∣S
證明:::
因為gcd(a,b)∣agcd(a,b)\mid agcd(a,b)∣a且gcd(a,b)∣bgcd(a,b)\mid bgcd(a,b)∣b。又因為有x,y∈N+x,y\in \mathbb{N}^+x,y∈N+
所以有gcd(a,b)∣axgcd(a,b)\mid axgcd(a,b)∣ax且gcd(a,b)∣bygcd(a,b)\mid bygcd(a,b)∣by也就是gcd(a,b)∣(ax+by)gcd(a,b)\mid (ax+by)gcd(a,b)∣(ax+by)
那么設S=gcd(a,b)?kS=gcd(a,b)*kS=gcd(a,b)?k那么有S∣(ax+by)?k?S∣(axk+byk)S\mid (ax+by)*k \Rightarrow S\mid (axk+byk)S∣(ax+by)?k?S∣(axk+byk)
解題思路
首先我們考慮這個序列并不是正整數但是我們可以讓XiX_iXi?取反來達到所有都變成正整數的目的。
所以答案就是gcd(∣A1∣,∣A2∣,∣A3∣,...,∣An∣)gcd(|A_1|,|A_2|,|A_3|,...,|A_n|)gcd(∣A1?∣,∣A2?∣,∣A3?∣,...,∣An?∣)
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,ans; int main() {scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);ans=__gcd(ans,abs(x)); }printf("%d",ans); }總結
以上是生活随笔為你收集整理的P4549-[模板]裴蜀定理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nssl1351-矩形反色【离散,差分】
- 下一篇: dlink路由器复位连不上网dlink怎