首页 > 代码库 > 数学上的一些小技巧韩信点兵的问题

数学上的一些小技巧韩信点兵的问题

对于韩信点兵的问题,一个数n;n%3=t1;n%5=t2;n%7=t3;如果现在告诉你这三个余数,问你怎么求出来n。只要求最小的一个n就行解法如下:

一.首先对于3来说,因为70能被5和7整除,并且对三取余等于1;

二.对于5来说,因为21能被3和7整除,并且对于5取余等于1

三.对于7来说,因为15能被3和5整除,并且对于7取余等于1.

四.则就是将70*t1+21*t2+15*t3;如果得到的数比105大,那么将这个数减去105;直到小于105;

原理就是:

70=3*n+1;所以70*t1=3*n‘+t1;其他的同理;

而将他们相加之后,对于3来说;因为21和15均可以被三整除;所以余数仍然为t1;其余的同理

为什么减去105:

因为105为他们三个的最大公倍数,也可以看做是他们的周期;你通过计算就可以看到在一个周期内的话,不可能出现余数相同的情况,所以要减去105,得到最小的数。

 

数学上的一些小技巧韩信点兵的问题