POJ 1006(中国剩余定理)

中国剩余定理

若一个数除m1余p1,除m2余p2……,除mn余pn (m1,m2……,mn互质)

则求 k1使k1=m2*……*mn的倍数且除m1余1

……

则这个数为(k1*p1+k2*p2+……kn*pn) mod (m1*m2*……*mn)


Program P1005;
var
   a,b,c,d,i,a1,a2,a3,ans:longint;
begin
   i:=1;
   a1:=28*33;
   a2:=23*33;
   a3:=23*28;
   while (a1 mod 23<>1) do inc(a1,28*33);
   while (a2 mod 28<>1) do inc(a2,23*33);
   while (a3 mod 33<>1) do inc(a3,23*28);

   while (true) do
   begin
      read(a,b,c,d);
      if (a=-1) and (b=-1) and (c=-1) and (d=-1) then break;
      ans:=(a1*a+a2*b+a3*c+21252-d) mod 21252;
      if ans=0 then ans:=21252;
      writeln('Case ',i,': the next triple peak occurs in ',ans,' days.');
      inc(i);
   end;
end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值