CodeVS3040 中国余数定理 1
2017-03-09 14:58
369 查看
链接
http://codevs.cn/problem/3040/题解
中国剩余定理。对于方程组
⎧⎩⎨⎪⎪⎪⎪⎪⎪x=a1(mod m1)x=a2(mod m2)...x=an(mod mn)
解的构造方法是
M=m1m2m3...mkMi=Mmians=∑i=1naiMiM−1i
其中M−1i是Mi在模mi意义下的逆元
ans mod M就是最小的正整数解
代码
//中国剩余定理 #include <cstdio> #include <algorithm> #define maxn 100 #define ll long long using namespace std; ll m[maxn], a[maxn]; void exgcd(ll a, ll b, ll &x, ll &y) { if(!b){x=1,y=0;return;} ll xx, yy; exgcd(b,a%b,xx,yy); x=yy,y=xx-a/b*yy; } ll inv(ll a, ll p) { ll x, y; exgcd(a,p,x,y); return (x+p)%p; } ll crt(ll *a, ll *m, ll n) { ll M=1, Mi, x, ans=0, i; for(i=1;i<=n;i++)M=M*m[i]; for(i=1;i<=n;i++) { Mi=M/m[i]; x=inv(Mi,m[i]); ans=ans+a[i]*Mi*x; } return ans%M; } int main() { ll k, ans; scanf("%lld",&k); a[1]=2, a[2]=3, a[3]=2; m[1]=3, m[2]=5, m[3]=7; ans=crt(a,m,3); ans+=(k-1)*105; printf("%lld\n",ans); return 0; }
相关文章推荐
- 中国余数定理 1(codevs 3040)
- 【codevs3990】中国余数定理2
- CodeVS3990:中国余数定理 2 (CRT)
- codevs3990——中国余数定理:一元模线型方程组
- [CODEVS3990]中国余数定理 2(中国剩余定理)
- 【codevs3990】中国余数定理2 中国剩余定理
- 【codevs3990】中国余数定理2
- 3040 中国余数定理 1(维基oi)
- Codevs 3990 [中国剩余定理]
- 【模板】【codevs3990】中国剩余定理
- BZOJ_P1951&Codevs_P1830 [SDOI2010]古代猪文(Lucas定理+扩展欧几里得+中国剩余定理)
- 3040 中国余数定理 1[一中数论随堂练]
- code vs 3990 中国余数定理 2 (中国剩余定理)
- 实用算法实现-第 27 篇 中国余数定理
- 中国余数定理 2(codevs 3990)
- HDOJ 1573 X问题 (余数不互质的中国剩余定理)
- UVA 11754 Code Feat 中国剩余定理+普通枚举
- UVA - 11754 Code Feat (中国剩余定理 + 分类枚举)
- 中国余数定理
- UVa 11754 - Code Feat (中国剩余定理 枚举)