Vision_MATH_中国剩余定理
来源:互联网 发布:采购流程及优化 编辑:程序博客网 时间:2024/05/22 04:39
///定义:
/*
中国剩余定理给出了以下的一元线性同余方程组:
x ≡ a1 (mod m1)
x ≡ a2 (mod m2)
x ≡ a3 (mod m3)
x ≡ a4 (mod m4)
*
*
*
x ≡ ak (mod mk)
*/
///扩展:
/*
通解公式:X = X0+k*M;(M = LCM(m1,m2,m3,,,mk))
*/
/*
中国剩余定理给出了以下的一元线性同余方程组:
x ≡ a1 (mod m1)
x ≡ a2 (mod m2)
x ≡ a3 (mod m3)
x ≡ a4 (mod m4)
*
*
*
x ≡ ak (mod mk)
*/
///代码:
/***name:中国剩余定理**function:求解一元线性同余方程组**条件:m1,m2,m3....mk两两互素**输入参数:m集合+a集合**输出参数:最小正整数解*/#include <iosteam>#include <bits/stdc++.h>using namespace std;typedef long long LL;///扩展欧几里得void gcd(LL a,LL b,LL &d,LL &x,LL &y){ if(b==0){ d = a; x = 1; y = 0; } else { gcd(b,a%b,d,y,x); y-=(a/b)*x; }}///中国剩余定理LL China(int n,LL *m,LL *a){ LL M = 1,d,y,x; LL ret = 0; for(int i = 0;i<n;i++)M*=m[i]; for(int i = 0;i<n;i++){ LL w = M/m[i]; gcd(m[i],w,d,x,y); ret = (ret+y*w*a[i])%M; } return (M+ret%M)%M;}LL m[15],a[15];int main(){ int n; cin>>n; for(int i = 0;i<n;i++){ cin>>m[i]>>a[i]; } cout<<China(n,m,a)<<endl; return 0;}
/***name:中国剩余定理**function:求解一元线性同余方程组**条件:m1,m2,m3....mk不互素**来源:HDU 1573**输入参数:m集合+a集合**输出参数:最小正整数解(有解)||无解flag*/#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>using namespace std;int T,n,s,M,ans,flag,a[15],m[15];inline int read(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=-1; ch=getchar();} while(isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();} return x*f;}void exgcd(int a,int b,int &g,int &x,int &y){ if(b==0) {x=1; y=0; g=a; return;} exgcd(b,a%b,g,x,y); int t=x;x=y;y=t-a/b*y;}void China(){ int A=a[1],k,y; M=m[1]; for(int i=2;i<=n;i++){ int da=a[i]-A,g; exgcd(M,m[i],g,k,y); if(da%g) {flag=1; return;}///对于方程m1*x+m2*y=c,如果c不是d的倍数就无整数解 int t=m[i]/g; k*=da/g; k=(k+t)%t; A+=k*M; M=M*m[i]/g; A=(A+M)%M; } ans=A;///大于等于0的最小正整数解}int main(){ /* 返回的参数有flag和ans flag判断是否有解 */ flag=0; for(int i=1;i<=n;i++) m[i]=read(); for(int i=1;i<=n;i++) a[i]=read(); China();}
///扩展:
/*
通解公式:X = X0+k*M;(M = LCM(m1,m2,m3,,,mk))
*/
阅读全文
0 0
- Vision_MATH_中国剩余定理
- 中国剩余定理模版【中国剩余定理】
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 数论-中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 数论/中国剩余定理
- 关于《中国剩余定理》
- 中国剩余定理
- 模板[中国剩余定理]
- 【Pixhawk】注册一个字符型驱动设备
- 支付宝PC端接入
- redis集群
- SpringBoot配置
- 中文分词 正向最大匹配法 逆向最大匹配法 双向最大匹配法
- Vision_MATH_中国剩余定理
- SAS操作知识点记录
- 自定义View基础
- Gym 101482.C
- 获得marginLeft
- 递归遍历树结构
- 考试编程题
- Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解(二)
- Cmake Practice(三)