数学模板

前言

用大样例hack你的都是流氓

好吧,我矩阵那里多次写挂,所以写点不会炸心态的。

裴蜀定理(贝祖定理)

定理内容:

\[ax + by = c \; (x\in Z^{+},y\in Z^{+}) \Leftrightarrow \; gcd(a,b) | c \]

题目

给定一个包含 \(n\) 个元素的整数序列 \(A\),记作 $ A_1,A_2,A_3,...,A_n$

求另一个包含 \(n\) 个元素的待定整数序列 \(X\),记 $ S=\sum\limits_{i=1}^nA_i\times X_i $使得 \(S>0\)\(S\) 尽可能的小。

推广

\[a_1x_1+a_2x_2+……+a_nx_n=S \; \Leftrightarrow \; gcd(a_1,a_2……a_n) \mid S \]

所以最小的 \(S\) 为这些数的\(gcd\)

如果有负数,要取其绝对值

code

#include<bits/stdc++.h>
using namespace std;
int n,s,x,y;
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
int main(){
	cin>>n;
	if(n==1){
		cin>>x;
		if(x<0)x=-x;
		cout<<x;
	}
	if(n>=2){
		cin>>x>>y;
		if(x<0)x=-x;
		if(y<0)y=-y;
		s=gcd(x,y);
	}
	n-=2;
	while(n--){
		cin>>x;
		if(x<0)x=-x;
		s=gcd(s,x);
	}
	cout<<s;
	return 0;
}

二元一次不定方程

题目

给定\(T\)组不定方程

\[ax+by=c \]

若该方程无整数解,输出 \(-1\)

若该方程有整数解,且有正整数解,则输出:
其正整数解的数量,
所有正整数解中 \(x\) 的最小值,
所有正整数解中 \(y\) 的最小值,
所有正整数解中 \(x\) 的最大值,
以及所有正整数解中 \(y\) 的最大值。

若方程有整数解,但没有正整数解,你需要输出:
所有整数解中 \(x\) 的最小正整数值, \(y\) 的最小正整数值。

正整数解即为 \(x, y\) 均为正整数的解,

\(\boldsymbol{0}\) 不是正整数。

整数解即为 \(x,y\) 均为整数的解。

posted @ 2021-08-21 17:20  Nickle-NI  阅读(50)  评论(0编辑  收藏  举报