POJ 1006

需要注意两个地方:1.先取模得到各个周期第1次出现的天数。 2. X<=0时就继续加。

在网上搜了一下,有人说这是中国剩余定理,参考链接

#include <stdio.h>

int main(){
	int p=0, e, i, d;
	int res[10000];
	int k = 0;
	int X;
	while(scanf("%d %d %d %d", &p,&e,&i,&d), p!=-1){
		int A, B, C;
		p %= 23;
		e %= 28;
		i %= 33;
		A = p - d;
		B = e - d;
		C = i - d;
		X = C;
		
		while(X<=0 ||(X-B)%28!=0 || (X-A)%23!=0){
			X += 33;
		}
		res[k++] = X;
	}
	for(i=0;i<k;i++)
		printf("Case %d: the next triple peak occurs in %d days.\n",i+1,res[i]);
}
posted @ 2011-09-24 21:52  thomaslee  阅读(119)  评论(0编辑  收藏  举报