剩余定理(韩信点兵)

剩余定理在线性代数里边好像是非常常见的东西,但是学渣还没学过线代所以感觉这种线性叠加非常神奇。

题目描述:

已知一个数模3余a,模5余b,模7余c,求出这个数的最小值。

解答:

未知的数用x表示。

将x拆分为x1+x2+x3

其中x1满足:x1%3 == a && x1%5 == 0 && x1%7 == 0

x2   x3  同理。

我们只需要找到一个m使得m%3 == 1 && m%5 == 0 && m%7 == 0

然后x1 == a * m

同理求得x2  x3.

然后符合条件的x就是x1 x2 x3 的和。

然后我们目标是求最小的符合条件的x。

这时我们又把x拆分为x4  x5.

使得x4满足 x4%3 == 0 && x4%5 == 0 && x4%7 == 0

则x5就是所求的解。

时间: 2024-11-08 11:09:19

剩余定理(韩信点兵)的相关文章

hihocode 九十七周 中国剩余定理

题目1 : 数论六·模线性方程组 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:今天我听到一个挺有意思的故事! 小Hi:什么故事啊? 小Ho:说秦末,刘邦的将军韩信带领1500名士兵经历了一场战斗,战死四百余人.韩信为了清点人数让士兵站成三人一排,多出来两人:站成五人一排,多出来四人:站成七人一排,多出来六人.韩信立刻就知道了剩余人数为1049人. 小Hi:韩信点兵嘛,这个故事很有名的. 小Ho:我觉得这里面一定有什么巧妙的计算方法!不然韩信不可能这么快计

转载----POJ 1006 中国剩余定理

本文为转载,源地址:   http://blog.csdn.net/dongfengkuayue/article/details/6461298 POJ 1006   Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 78980   Accepted: 23740 Description Some people believe that there are three cycles in a perso

韩信点兵-中国剩余定理(练习)

http://acm.nyist.net/JudgeOnline/problem.php?pid=34提交地址 韩信点兵-中国剩余定理. 题目可以用枚举很简单的做出来,在这里写是为了运用一下刚刚学习的中国剩余定理. 以前写过中国剩余定理的博客在这就不多说了. 如果下面的字母看不懂请看我的另一篇博客http://blog.csdn.net/u010123208/article/details/24314627 说一说思路吧. 1.首先我们要用数组存储我们的要的除数,和余数.我们用m[]来存储,余数

韩信点兵(中国剩余定理)

中国剩余定理是数论中的一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法.又称为孙子定理,"韩信点兵""求一术""鬼谷算""隔墙算""剪管术""秦王暗点兵""物不知数"等名称. 例如:物不知数原文: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 宋朝数学家秦九韶对"物不知数"问题作出了完整系统的解

poj1006---中国剩余定理

#include<iostream> using namespace std; int main(){ int p,e,i,d,count=0; while(cin>>p>>e>>i>>d,p!=-1&&e!=-1&&i!=-1&&d!=-1){ count++; int n=(1288*i+14421*e+5544*p-d+21252)%21252; if(n==0) cout<<&q

ACM数论之旅9---中国剩余定理(壮哉我大中华╰(*&#176;▽&#176;*)╯)

中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 7个7个分剩2个 问这个物品有多少个 解这题,我们需要构造一个答案 我们需要构造这个答案 5*7*inv(5*7,  3) % 3  =  1 3*7*inv(3*7,  5) % 5  =  1 3*5*inv(3*5,  7) % 7  =  1 这3个式子对不对,别告诉我逆元你忘了(*´∇`*),忘了的人请翻阅前几章复习 然后两边同乘你需要的数 2 * 5*7*inv(5*

数论E - Biorhythms(中国剩余定理,一水)

E - Biorhythms Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the

gcd,扩展欧几里得,中国剩余定理

1.gcd: int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } 2.中国剩余定理: 题目:学生A依次给n个整数a[],学生B相应给n个正整数m[]且两两互素,老师提出问题:有一正整数ans,对于每一对数,都有:(ans-a[i])mod m[i]=0.求此数最小为多少. 输入样例: 1 10 2 3 1 2 3 2 3 5 8 1 2 3 4 5 6 7 8 97 89 67 61 59 53 47 88 12 1 2 3 4 5 6 7 8 9

HDU 1573 X问题 中国剩余定理

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1573 题意:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i] = b[i], - (0 < a[i] <= 10). 思路:中国剩余定理的模板题,如果找不到这样的数或者最小的X大于N,输出零. 代码: #include <iostream> #include