/*
* poj_1006.c
* accepted
*/
#include <stdio.h>
#define PHYSICAL_CYCLE (23)
#define EMOTIONAL_CYCLE (28)
#define INTELLECTUAL_CYCLE (33)
static void poj_1006 ();
static int lcm (int a, int b);
int main (int argc, char * argv[]){
poj_1006 ();
return 0;
}
static void poj_1006 (){
int h, j, k, l;
int p, e, i, d;
int pt, et, it;
int a, lcm_pe, lcm_pei;
lcm_pe = lcm (PHYSICAL_CYCLE, EMOTIONAL_CYCLE);
lcm_pei = lcm (lcm_pe, INTELLECTUAL_CYCLE);
scanf ("%d%d%d%d", &p, &e, &i, &d);
l = 0;
while (!(-1 == p && -1 == e && -1 == i && -1 == d)){
pt = p % PHYSICAL_CYCLE;
et = e % EMOTIONAL_CYCLE;
it = i % INTELLECTUAL_CYCLE;
for (a = d + 1; a <= PHYSICAL_CYCLE + d; a ++){
if ( a % PHYSICAL_CYCLE == pt){
break;
}
}
for (; a <= 2 * lcm_pei; a += PHYSICAL_CYCLE){
if (a % EMOTIONAL_CYCLE == et){
break;
}
}
for (; a <= 2 * lcm_pei; a += lcm_pe){
if (a % INTELLECTUAL_CYCLE == it){
break;
}
}
printf ("Case %d: the next triple peak occurs in %d days.\n", ++l, a - d);
scanf ("%d%d%d%d", &p, &e, &i, &d);
}
}
static int lcm (int a, int b){
int ta = a, tb = b, r;
while (tb){
r = ta;
ta = tb;
tb = r % ta;
}
return (a * b / ta);
}
POJ 1006
最新推荐文章于 2021-02-13 19:58:12 发布