题目链接:http://poj.org/problem?id=1006
解题报告:
1、枚举天数的时候可以根据前面的结果直接跳过一些错误的答案。
///三个周期是23,28,33, #include <stdio.h> int main() { int p,e,i,d,Case=1; while(scanf("%d%d%d%d",&p,&e,&i,&d),p!=-1) { int t1=p%23,t2=e%28,t3=i%33;///三个周期第一次出现的时间 int day; for(day=d+1;day<=21252;day++) { if((day-t1)%23==0) break; } for(;day<=21252;day+=23) { if((day-t2)%28==0) break; } for(;day<=21252;day+=23*28) { if((day-t3)%33==0) break; } printf("Case %d: the next triple peak occurs in %d days.\n",Case,day-d); Case++; } return 0; }