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-Biorhythms(中国剩余定理)

现设 num 是下一个相同日子距离开始的天数          p,e,i,d 如题中所设! 那么就可以得到三个式子:( num + d ) % 23 == p; ( num + d ) ...
  • u013476556
  • u013476556
  • 2014-08-06 14:40:52
  • 402

POJ 1006 源代码——中国剩余定理分析

  • 2011年02月27日 22:00
  • 724B
  • 下载

POJ1006 Biorhythms(生理周期,中国剩余定理详述)

Description   人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的...
  • SimonCoder
  • SimonCoder
  • 2015-11-16 08:56:59
  • 1363

poj1006 Biorhythms 边界,坑题

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 125633   A...
  • EventQueue
  • EventQueue
  • 2016-03-17 21:14:07
  • 2002

北大ACM1006——Biorhythms~~中国剩余定理

中国剩余定理,百度一下,就有它的定义与证明。 这里我就讲一个例子就好了。 题目的意思就是给你p,e,i,d。(n + d)% 23 = p,(n + d) % 28 = e,(n + d) % 33 ...
  • qq_25425023
  • qq_25425023
  • 2015-06-14 09:39:44
  • 876

poj 1006 与 中国剩余定理

poj 1006 题的思路不是很难的,可以转化数学式: 现设 num 是下一个相同日子距离开始的天数          p,e,i,d 如题中所设! 那么就可以得到三个式子:( num + d ...
  • shanshanpt
  • shanshanpt
  • 2013-03-27 09:46:56
  • 8579

|poj 1006|中国剩余定理|Biorhythms

poj传送门 裸的中国剩余定理,注意一下负数的情况即可#include #include #include #define ms(i,j) memset(i,j, siz...
  • Darost
  • Darost
  • 2017-02-03 23:17:24
  • 443

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

题目链接 https://cn.vjudge.net/problem/POJ-1006 【题目描述】 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每...
  • xiao_k666
  • xiao_k666
  • 2018-03-11 11:48:57
  • 22

POJ 1006 Biorhythms(中国剩余定理)

题目: 代码:
  • npufz
  • npufz
  • 2014-08-25 18:56:14
  • 252

POJ 1006 Biorhythms(中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 122939   A...
  • helloiamclh
  • helloiamclh
  • 2015-10-18 17:41:57
  • 301
收藏助手
不良信息举报
您举报文章:poj 1006 Biorhythms 中国剩余定理
举报原因:
原因补充:

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