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

孙子算经中有记载:“今有数不知其数:二三数之余而,五五之数余三,七七数之余而,问物几何?”它的意思就是有一些物品,如果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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值