中国剩余定理
来源:互联网 发布:java飞机大战源代码 编辑:程序博客网 时间:2024/06/10 00:55
给出一些素数pi与一些余数ai 求满足%pi==ai的最小整数解
假设一些xi=pi*k+ai
那么如果我们想要Σxi成为其中的一个解
因为要保证其%pi==ai
那么存在xj%pi==0;(j!=i)
因为a%b==c==(a+kb)%b
所以存在xi为lcm(pj)(j!=i)的倍数
又存在xi%pi==ai
令M=πpi
所以只需要求出a(M/pi)%pi==ai的最小整数解
可以用欧扩求出
最后把这样的所有xi加起来对M取模 得到的就是最小解
例题:韩信点兵
【题目描述】
韩信是中国军事思想“谋战”派代表人物,被后人奉为“兵仙”、“战神”。“王侯将相”韩信一人全任。“国士无双”、“功高无二,略不世出”是楚汉之时人们对其的评价。作为统帅,他率军出陈仓、定三秦、擒魏、破代、灭赵、降燕、伐齐,直至垓下全歼楚军,无一败绩,天下莫敢与之相争。
相传,韩信带兵打仗时,从不直接清点军队人数。有一次,韩信带1500名兵士打仗,战死四五百人。站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信马上说出人数:1049。
这次,刘邦派韩信带兵
已知韩信发出了
【输入格式】
第一行两个正整数
接下来有M行,每行两个非负整数
输入保证每个素数各不相同。
【输出格式】
输出一行,一个整数。
若有解,输出最小损失人数。若无解,输出-1.
【样例输入】
1500 33 25 47 6
【样例输出】
31
中国剩余定理裸题
代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=20;typedef long long ll;int A[maxn],B[maxn];inline void exgcd(ll a,ll b,ll &d,ll &x,ll &y){if(!b){x=1;d=a;y=0;return ;}else {exgcd(b,a%b,d,y,x);y-=(a/b)*x;}}int main(){freopen("HanXin.in","r",stdin);freopen("HanXin.out","w",stdout);ll n;int m;scanf("%lld %d",&n,&m);ll res=0;ll M=1;for(int i=1;i<=m;i++){scanf("%d %d",&A[i],&B[i]);M*=A[i];}for(int i=1;i<=m;i++){ll r=M/A[i];ll x=0,d=0,y=0;exgcd(r,A[i],d,x,y);ll aa=A[i]/d,bb=r/d;res=(res+x*r*B[i]+M)%M;}res=(res+M)%M;if (res > n) return puts("-1\n"), 0;while (res + M < n)res += M;printf("%lld\n",n-res);return 0;}
- 中国剩余定理模版【中国剩余定理】
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 数论-中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 数论/中国剩余定理
- 关于《中国剩余定理》
- 中国剩余定理
- 模板[中国剩余定理]
- 中国剩余定理
- php小技巧
- 笨方法学python 习题22、23 整理所学内容
- cogs2098. Asm.Def的病毒解题报告
- 【图论】[luoguP3905]道路重建
- 线性滤波与卷积的基本概念
- 中国剩余定理
- Last mile of the way(NOIP2017模拟题)
- Python函数式编程之filter
- .Net下的 ORM框架介紹
- ES6与ECMA2015的关系
- Spring.NET企业架构实践之 NHibernate + Spring.NET + WCF + Windows服务 + Silverlight 中小企业应用架构完整Demo
- 学习笔记GAN004:DCGAN main.py
- 下载 caffe
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo