【中国剩余定理】终于弄懂剩余定理了

【茅塞顿开……这么简单的东西我居然刚懂】//中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国剩余定理。

//中国剩余定理的结论:
//令任意固定整数为M,当M/A余a,M/B余b,M/C余c,M/D余d,…,M/Z余z时,这里的A,B,C,D,…,Z为除数,除数为任意自然数([span]如果为0,没有任何意义,如果为1,在孙子定理中没有计算和探讨的价值,所以,不包括0和1)时;余数a,b,c,d,z为自然整数时。
//1、当命题正确时,在这些除数的最小公倍数内有解,有唯一的解,每一个最小公倍数内都有唯一的解;当命题错误时,在整个自然数范围内都无解。
//2、当M在两个或两个以上的除数的最小公倍数内时,这两个或两个以上的除数和余数可以定位M在最小公倍数内的具体位置,也就是M的大小。
//3、正确的命题,指没有矛盾的命题:分别除以A,B,C,D,…,Z不同的余数组合个数=A,B,C,D,…,Z的最小公倍数=不同的余数组合的循环周期.
//一个数被3除余1,被4除余2,被5除余4,这个数最小是几? 
   //题中3、4、5三个数两两互质。 
   //则〔4,5〕=20;〔3,5〕=15;〔3,4〕=12;〔3,4,5〕=60。 
   //为了使20被3除余1,用20×2=40; 
   //使15被4除余1,用15×3=45; 
   //使12被5除余1,用12×3=36。 
   //然后,40×1+45×2+36×4=274, 
   //因为,274>60,所以,274-60×4=34,就是所求的数。

//POJ 1006 Biorhythms
//Memory Time 
//256K   94MS 

#include<iostream>
using namespace std;

int main(void)
{
	int p,e,i,d;
	int time=1;
	while(cin>>p>>e>>i>>d)
	{
		if(p==-1 && e==-1 && i==-1 && d==-1)
			break;

		int lcm=21252;  // lcm(23,28,33)
		int n=(5544*p+14421*e+1288*i-d+21252)%21252;
		if(n==0)
			n=21252;
		cout<<"Case "<<time++<<": the next triple peak occurs in "<<n<<" days."<<endl;
	}
	return 0;
}


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果天王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值