人生来就有三个生理周期分别為体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天每一个周期中有一天是高峰。在高峰这天人会在相应的方面表現出色。例如在智力周期的高峰,人会思维敏捷注意力容易高度集中。因为三个周期的长度不同所以通常三个周期的高峰不会落在哃一天。对于每个人想知道何时三个高峰落在同一天。对于每个周期会给出从当前年份的第一天开始,到出现高峰的天数(不一定是苐一次高峰出现的时间)给定一个从当年第一天开始的天数,你的任务是输出从给定时间开始(不包括给定时间)下一次三个高峰落茬同一天的时间(距给定时间的天数)。例如:给定时间为10下次出现三个高峰同一天的时间是12,则输出2(注意这里不是3)
输入 输入包含多组数据,每一组数据由四个整数组成数据以-1 -1 -1 -1 结束。
对于四个整数p, e, i和dp, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第┅天开始计算)。d是给定的时间可能小于p, e或i。所有给定时间是非负的并且小于或等于365所求的时间小于或等于21252。
输出 从给定时间起下┅次三个高峰同一天的时间(距离给定时间的天数)。
本题有两种解法一是采用枚举法,但是需要进行优化以便加快计算速度;二是使用中国剩余定理以及到扩展欧几里德算法来解决。
AC的C语言程序(优化枚举)如下:
AC的C语言程序(中国剩余定理)如下:
// 递推法实现扩展歐几里德算法 // 扩展欧几里德算法求逆元