2018.4.3(程序设计与算法)生理周期,p,e,i出现高峰(枚举的练习)
2018-04-03 16:34
543 查看
人有体力、情商、智商的高峰日子,它们分别每隔 23天、28天和33天出现一次。对于每个人,我们想 知道何时三个高峰落在同一天。给定三个高峰出现 的日子p,e和i(不一定是第一次高峰出现的日子), 再给定另一个指定的日子d,你的任务是输出日子d 之后,下一次三个高峰落在同一天的日子(用距离d 的天数表示)。例如:给定日子为10,下次出现三 个高峰同一天的日子是12,则输出2。
输入: 输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和 智力高峰出现的日子。d是给定的日子,可能小于p, e或 i。 所有给定日子是非负的并且小于或等于365,所求的日子小于 或等于21252。
解题思路:从第d+1(=k)天开始,一直试到第21252天,对其中每个日期K看是否满足; 即用枚举
① : (k-p)%23==0&&(k-e)%28==0&&(k-i)%33==0 判断是否满足三个高峰同一天
如何试的更快? -->跳着试
思路:先判断那一天为体力高峰,然后跳过两个体力高峰天之间的日期;再判断哪天为同时满足体力与情商双高峰的日期,然后跳过不满足双高峰的日期 接着测试三高峰的日期。
② : for(k=d+1;(k-p)%23;++k);
for( ; (k-e)%28;k+=23);
for( ; (k-i)%33;k+=23*28);
输入: 输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和 智力高峰出现的日子。d是给定的日子,可能小于p, e或 i。 所有给定日子是非负的并且小于或等于365,所求的日子小于 或等于21252。
解题思路:从第d+1(=k)天开始,一直试到第21252天,对其中每个日期K看是否满足; 即用枚举
① : (k-p)%23==0&&(k-e)%28==0&&(k-i)%33==0 判断是否满足三个高峰同一天
如何试的更快? -->跳着试
思路:先判断那一天为体力高峰,然后跳过两个体力高峰天之间的日期;再判断哪天为同时满足体力与情商双高峰的日期,然后跳过不满足双高峰的日期 接着测试三高峰的日期。
② : for(k=d+1;(k-p)%23;++k);
for( ; (k-e)%28;k+=23);
for( ; (k-i)%33;k+=23*28);
相关文章推荐
- 2018年全国多校算法寒假训练营练习比赛(第一场) - I - 找数字个数(枚举)
- 2977:生理周期(枚举)
- 枚举——最佳生理周期
- PAT程序设计练习——甲级1003(任意两个城市最短距离、Floyd最短路径算法)
- 第一周 枚举 例题3.生理周期
- 简单枚举的例子:生理周期
- 【算法练习】找出数组中仅出现一次的数字
- 中国剩余定理算法详解 + POJ 1006 Biorhythms 生理周期
- 算法笔记_106:蓝桥杯练习 算法提高 周期字串(Java)
- 中国剩余定理算法详解 + POJ 1006 Biorhythms 生理周期
- poj-4148-生理周期-C语言-枚举
- ~这些年,我们一起学过的java~12~小学期程序设计之生理周期问题
- 2018年全国多校算法寒假训练营练习比赛(第一场) - A - 大吉大利,今晚吃鸡——枪械篇(枚举)
- ? 枚举 编程题#2:拨钟问题(Coursera 程序设计与算法 专项课程4;函数memcpy的用法,switch case break 语句!)
- 枚举 编程题#1: 画家问题(Coursera 程序设计与算法 专项课程4;枚举方法:用二进制依次加1的进位方法模拟实现)
- Coursera_程序设计与算法_计算导论与C语言基础_数组应用练习
- 算法笔记_060:蓝桥杯练习 出现次数最多的整数(Java)
- 枚举举例,生理周期
- 剑指offer-算法题练习:part5 用两个栈实现队列
- 算法练习(34):Maximum Length of Pair Chain