北京大学郭炜-生理周期

人有体力、情商、智商的高峰日子,它们分别每隔 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。

输出

从给定日子起,下一次三个高峰同一天的日子(距离给定日子 的天数)

概括成图大概是这个样子:

输入样例

0 0 0 00 0 0 1005 20 34 3254 5 6 7283 102 23 320203 301 203 40-1 -1 -1 -1

输出样例

Case 1: the next triple peak occurs in 21252 days.Case 2: the next triple peak occurs in 21152 days.Case 3: the next triple peak occurs in 19575 days.Case 4: the next triple peak occurs in 16994 days.Case 5: the next triple peak occurs in 8910 days.Case 6: the next triple peak occurs in 10789 days.

解题思路:
题目要我们输出下一次三高峰在同一天的日子,即体力、情感、智力高峰都必须出现在同一天内。
倘若我们用最普通的做法,程序从d+1天开始,一直试到21252天,对其中每一个日期k,看看是否满足:

(k-p)%23==0 && (k-e)%28==0 && (k-i)%33==0

的话,代码将会很累赘。

应该有更好的办法:
所以,我们一旦找到第一个体力高峰后,每次都夸23天去找下一个体力高峰是不是情感高峰,在找到体力高峰和情感高峰位于同一天的那个点后,每一次夸23*28天去找下一个体力高峰和情感高峰双高点是不是智力高峰,倘若是,则是三高峰。

#include <iostream>
using namespace std;
int main(){int p,e,i,d,caseNo = 0;while (cin>>p>>e>>i>>d && p!=-1){++ caseNo;int k;//找到下一次体力的最高峰for(k=d+1;(k-p)%23;k++);//找到体力最高峰后,找情商最高峰for(;(k-2)%28;k+=23);//找到情商最高峰后,找智商最高峰for(;(k-i)%33;k+=23*28);//通过3次循环找到了三高峰,输出kcout<<"Case "<<caseNo<<": the next triple peak occurs in "<<k-d<<"day";}
}

北京大学郭炜-生理周期 思路细讲相关推荐

  1. 最长公共子序列 - 北京大学郭炜 动态规划代码详解

    最长公共子序列 - 北京大学郭炜 动态规划代码详解 解题思路: 该题可用动态规划解决.动态规划需要我们找出子问题. 假设我们输入两个字符串: ACTTGACC CGTT 那么如何通过动态规划算出其最大 ...

  2. 北京大学郭炜-最长上升子序列 动态规划讲解

    北京大学郭炜-最长上升子序列 动态规划讲解 问题原型: 解题思路: 找子问题,题目要求我们求1~n的最长上升子序列的长度,那我们想一想:1-2个元素的最长上升子序列的长度是多少,第1个元素的最长上升子 ...

  3. Java冒泡排序算法思路细讲

    1. 什么是冒泡排序 1.1 算法了解 难度定位:属于计算机领域的初级算法,对初学者来说,可能感觉思路上比较饶. 名字由来:液体气泡从深向浅冒泡时,气泡会由小到大变化.在这里形象地指数值从小到大的排序 ...

  4. 北京大学郭炜慕课习题解

    文章目录 二分 二分 1.2456:Aggressive cows 农夫 John 建造了一座很长的畜栏,它包括N (2≤N≤100,000)个隔间,这 些小隔间的位置为x 0 ,-,x N-1 (0 ...

  5. 程序设计与算法郭炜老师的课堂笔记2

    程序设计与算法郭炜老师的课堂笔记2 枚举 完美立方 生理周期 称硬币 熄灯问题 递归 求阶乘 汉诺塔 N皇后 逆波兰表达式 表达式求值 上台阶 放苹果 算24 二分算法 找一对数 分治 归并排序 快速 ...

  6. 【金猿人物展】Apache郭炜:数智新元,向内打破——开源星星火,燎原新科技...

    郭炜 本文由Apache Foundation Member郭炜撰写并投递参与"数据猿年度金猿策划活动--2021大数据产业趋势人物榜单及奖项"评选. 数据智能产业创新服务媒体 - ...

  7. c语言编程 生理周期的程序,生理周期(示例代码)

    题目链接: poj 1006  http://poj.org/problem?id=1006 NOI题库  http://noi.openjudge.cn/ch0201/1978/ Time Limi ...

  8. 易观郭炜:企业如何理解大数据价值,如何用好大数据?

    大数据,企业数字化的新能源. 导读 2018年,世界上科学家搜索频率最高的词汇前三分别是"癌症""区块链""大数据".其中,"大数 ...

  9. 120 - 算法 - 枚举 周期性跳转 openjudge:4148生理周期

    #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> using namespace st ...

  10. 第I题-生理周期(简单解法跳着试)====人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,

    人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏捷,精力容易 ...

最新文章

  1. Mark Links@2012/8/25
  2. IronPython项目有了新负责人
  3. java thread isalive_Java线程编程中isAlive()和join()的使用详解
  4. CF #366(div.2) C 模拟,思维
  5. python保留字的是_Python保留字
  6. linux打开文件int open,Linux下C语言open函数打开或创建文件与read,write函数详细讲解...
  7. 对于早期Servlet内核你清楚吗,这些基础的东西,不能忘哦
  8. innobackupex做MySQL增量备份及恢复
  9. 计算机信息技术会考操作题,信息技术会考操作题整理.doc
  10. 四、数组定义/冒泡排序的理论/什么是方法
  11. 爬虫之User-Agent
  12. 2016021902 - linux解压缩命令
  13. android view分析工具,Android 性能分析工具之TraceView
  14. 怎么把程序下载到stc15w201s_STC15W201S系列
  15. JPA 之 detach方法的使用及注意事项
  16. 修改Windows的Internet时间服务器使时间同步
  17. bootstrap4笔记
  18. 蒋涛:TUP,分享产品背后的技术和用户体验
  19. otsu阈值分割原理及实现
  20. 彩色复古装饰麻绳-----四色麻绳

热门文章

  1. C语言习题——提示输入3个整数值,分别代表日,月,年
  2. vue中实现复制链接功能
  3. Android Framework 框架系列之 kernel 分析工具Crash
  4. 比尔·盖茨给年轻人的18句忠告
  5. 关于BPM的一些常见问题
  6. rvm: command not found Mac
  7. 品味淡淡的感觉 淡淡的生活
  8. 豆瓣工程副总:谈谈技术团队的管理
  9. 打造你的开发神器——介绍Android Studio上的几个插件
  10. 李瑞霖:4.21黄金白银TD今日晚间走势操作建议