POJ 1006 Biorhythms
【问题描述】
“中国剩余定理”
此题的题意可以理解为:x % 23 == p; x % 28 == e; x % 33 == i;求x
所以接下来
使 33 * 28 * a % 23 = 1,得a = 6; 33 * 28 * 6 = 5544;
使23 * 33 * b % 28 = 1, 得b = 19;23 * 33 * 19 = 14421;
使23 * 28 * c % 33 = 1, 得c = 2; 23 * 28 * 2 = 1288。
那么x = 5544 * p + 14421 * e + 1288 * i;
这段是核心,没有这段题目是不容易做的。
所以接下来
使 33 * 28 * a % 23 = 1,得a = 6; 33 * 28 * 6 = 5544;
使23 * 33 * b % 28 = 1, 得b = 19;23 * 33 * 19 = 14421;
使23 * 28 * c % 33 = 1, 得c = 2; 23 * 28 * 2 = 1288。
那么x = 5544 * p + 14421 * e + 1288 * i;
这段是核心,没有这段题目是不容易做的。
C语言代码
#include <stdio.h>
#define D 21252
void main()
{
int p,e,i,d,n,c=0;
while(scanf("%d %d %d %d",&p,&e,&i,&d)!=EOF)
{
c++;
if(p==-1&&e==-1&&i==-1&&d==-1)
break;
n=(5544*p+14421*e+1288*i-d)%D;
if(n<=0) /*限定值取范围内*/
n+=21252;
printf("Case %d: the next triple peak occurs in %d days.\n", c, n );
}
}