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

来源:互联网 发布:淘宝店铺整体模块介绍 编辑:程序博客网 时间:2024/06/07 00:40

孙子算经中有记载:“今有数不知其数:二三数之余而,五五之数余三,七七数之余而,问物几何?”它的意思就是有一些物品,如果3个3个数

剩两个,如果5个5个数,最后剩3个,如果7个个7个数,最后剩2个,求这些物品的数量,这个问题称为孙子问题,西方数学家称为中国剩余定理

方法就是除3的余数a乘上70,除5的余数b乘上21,除7的余数c乘上15,最后再取余105

70,21,15实际上是一种巧妙的构造方法。

70是5和7的公约数,且被3除余1

21是3和7的公约数,且被5除余1

15是3和5的公约数,且被7除余1

这样结果这个数等于=70a+21b+15c就能保证被被3除余a,且被5除余b,且被7除余c

比如,求除以5、7、11以后所得余数为a,b,c.则这个数是:231a+330b+210c,然后对5×7×11=385取余即可。

例题:nyoj34

#include <stdio.h> int main() {     int a,b,c,d;     while(scanf("%d%d%d",&a,&b,&c)==3)     {        d=(70*a+21*b+15*c)%105;        if ((d<10)||(d>100))            printf("No answer\n");        else            printf("%d\n",d);     } }


0 0
原创粉丝点击