poj 1006 Biorhythms 中国剩余定理

原创 2014年02月22日 23:34:01
这道题真是花费n多时间啊,关键我就是想知道事情的来龙去脉.
"中国剩余定理"的经典例子:
《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何?”答为“23”。

 --------这个就是传说中的“中国剩余定理”。 其实题目的意思就是,n % 3 = 2, n % 5 = 3, n % 7 = 2; 问n是多少?

那么他是怎么解决的呢?
看下面:
题目中所涉及的3,5,7三个互质的数,(补充:)
(一个数的多少倍除以另一个数所得的余数为0,应该在互为素数里面吧)
(a%b=c-->(a+bk)%b=c)
(a%b=c-->(a*k)%bb=kc)
令:5*7*a%3=1;---------->a=2;即5*7*2=70;
   3*7*b%5=1;---------->b=1;即3*7*1=21;
   3*5*c%b=1;---------->c=1;即3*5*1=15;

为什么要使余数为1?是为了要求余数2的话,只要乘以2就可以了.要求余数为3的话,只要乘以3就可以了
(因为题目是在求n%3=2;n%5=3;n%7=2;)
(5*7*2)*2可以被5和7整除,但是%3等于2;
(3*7*1)*3可以被3和7整除,但是%5等于3;
(3*5*1)*2可以被3和5整除,但是%7等于2;
那么即使相加后,%3,5,7的情况也是一样的
那么我们即可得到(5*7*2)*2+(3*7*1)*3+(3*5*1)*2=233;
然后233%(3*5*7)=23;
----------------------------
回到题目中,我们要求那个num,开始的天数为d,依据题意是这样子:
(num+d)%23=p;
(num+d)%28=e;
(num+d)%33=i;令num+d=total;则所求即为num=total-d;
我终于知道怎么求的了.
在23,28,33三个数字是互质的
我们M=23*28*33=21252;M1=21252/23=924;M2=21252/28=759;M3=21252/33=644;
先确定第一个:924*y1=1(mod 23)<==>(924 mod 23)y1(mod 23)<==>4*y1=1(mod)23==>y1=6;
33*28*6=5544;
(除最后一个等号外其余等号是同余的意思,这条性质从哪得到的?)依次类推,只不过推导较麻烦,这到题也就是从这里失去了意义.
759*y2=1(mod 28)<==>3*y2=1(mod 28)==>y2=19;
23*33*19=14421;
644*y3=1(mod 33)<==>17*y3=1(mod 33)==>y3=2;
23*28*2=1288
;
那么total=5544*p+14421*e+1288*i;
注意范围限制:total%=21252,如果<=0;total+=21252;真漂亮!
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
//	freopen("1006.txt","r",stdin);
	int p,e,i,d,total,kcase=0;//题目中的含义
	while(1)
	{
		scanf("%d%d%d%d",&p,&e,&i,&d);
		if(p==-1 && e==-1 && i==-1 &&d==-1 )
			break;
		total=5544*p+14421*e+1288*i;
		kcase++;
		total%=21252;
		if(total-d<=0)
			total+=21252;
		printf("Case %d: the next triple peak occurs in %d days.\n",kcase,total-d);
	}
	return 0;
}

POJ 1006 Java:中国剩余定理

题目描述: 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏...
  • u012340794
  • u012340794
  • 2016年01月16日 20:22
  • 749

poj1006 生理周期(中国剩余定理)

生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 122157   Accepted: 38518 ...
  • d_x_d
  • d_x_d
  • 2015年09月15日 14:37
  • 1624

POJ 1006 Biorhythms 【中国剩余定理】

Description Some people believe that there are three cycles in a person's life that start the day h...
  • u013180220
  • u013180220
  • 2014年08月06日 10:04
  • 420

POJ 1006 Biorhythms(中国剩余定理 模板)

POJ 1006 Biorhythms(中国剩余定理 模板)
  • u012860063
  • u012860063
  • 2015年10月03日 20:51
  • 466

POJ 1006 Biorhythms (数论-中国剩余定理)

POJ 1006 Biorhythms (数论-中国剩余定理) 题目大意: 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(...
  • a1061747415
  • a1061747415
  • 2014年06月16日 13:38
  • 803

POJ 题目1006 Biorhythms(中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 116784   A...
  • yu_ch_sh
  • yu_ch_sh
  • 2015年01月27日 20:29
  • 324

POJ 1006:Biorhythms 中国剩余定理

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 121194   Accepted: 381...
  • u010885899
  • u010885899
  • 2015年08月03日 12:52
  • 385

poj 1006 Biorhythms(中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 118263   A...
  • u011699990
  • u011699990
  • 2015年04月06日 00:22
  • 458

Biorhythms POJ - 1006 (中国剩余定理)

Some people believe that there are three cycles in a person’s life that start the day he or she is b...
  • Coldfresh
  • Coldfresh
  • 2017年06月06日 16:23
  • 146

POJ 1006 Biorhythms【中国剩余定理】

链接在此:中国剩余定理 Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12194...
  • nuanxin_520
  • nuanxin_520
  • 2015年09月06日 18:29
  • 170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 1006 Biorhythms 中国剩余定理
举报原因:
原因补充:

(最多只允许输入30个字)