一直没懂这个题什么意思。。。
最后也不太懂,看了别人的代码才勉强能接受。参考:https://www.cnblogs.com/zsboy/archive/2012/01/16/2323244.html
大概是:
给你三个天数(这三个天数是相对于这一年的某三天),然后在给你一个当前日期(也是相对于当前年的)。
比如:5,6,7,8
这四个数,表示第一个周期的高峰将在今年的第五天出现。
第二个周期的高峰将在2020年的第6天出现。
第三个周期将在2020年的第7天出现。
现在是2020年的第8天。
所以只要简单的枚举就可以。
这是暴力方法,枚举每一天。
比较巧的方法是:维护某一天的高峰,比如体能的高峰是23天一次,所以我每次都+23,然后判断其他情感和智力到没到高峰,大大降低了复杂度。
#include<iostream> using namespace std; int main(){ int p,e,i,d,cas=0; while(cin>>p>>e>>i>>d){ int date=d++; while((d-p)%23!=0){ d++; } while((d-e)%28!=0 || (d-i)%33!=0){ d+=23; } printf("Case: the next triple peak occurs in %d days.\n",d-date); } return 0; }