原题链接

总时间限制: 1000ms 内存限制: 65536kB

描述

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周
期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精
力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们
想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数
(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开
始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下
次出现三个高峰同天的时间是12,则输出2(注意这里不是3)。

输入

一行,包含四个整数:p, e, i和d,相邻两个整数之间用单个空格隔开。
p, e, i分别表示体力、情感和智力高峰出现的时间(时间从当年的第一天开始计算)。
d 是给定的时间,可能小于p, e, 或 i。
所有给定时间是非负的并且小于等于365, 所求的时间小于等于21252。

输出

一个整数,即从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。

样例输入

4 5 6 7

样例输出

16994

思路

注意题面“不包括给定时间”,所以枚举应该从d+1开始。

解法一:无脑暴力

#include<iostream>
using namespace std;
int main(){
int p,e,i,d;
cin>>p>>e>>i>>d;
int k=d+1;
for(;k<=21252;k++)
if((k-p)%23==0&&(k-e)%28==0&&(k-i)%33==0)break;
cout<<k-d<<endl;
return 0;
}

解法二:

认真观察可以发现,一种属性的高峰与这个属性的下一个高峰间
不可能存在三种属性共同的高峰。所以枚举的时候可以跳着枚举。

#include<iostream>
using namespace std;
int main(){
int p,e,i,d;
int k;
for(k=d+1;(k-p)%23;k++);
for(;(k-e)%28;k+=23);
for(;(k-i)%33;k+=23*28);
cout<<k-d<<endl; return 0;
}

小结

这题很简单,但却说明了即使是枚举,根据题意也有可能可以做简单优化。

OpenJudge - 2977:生理周期的更多相关文章

  1. 生理周期[PKU1006]

    生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 132195   Accepted: 42171 Descripti ...

  2. 生理周期(c++实现)

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

  3. ACM第二题 生理周期

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

  4. [POJ 1006]生理周期

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

  5. 【同余方程组】POJ1006 生理周期

    同余方程组: 先来看一道题目:有物不知其数,三三数之剩二:五五数之剩三:七七数之剩二.问物几何?  然后我们可以做如下变换,设x为所求的数. x%3=2              x ≡ a1(%m1 ...

  6. OpenJ_Bailian 4148 生理周期

    生理周期 OpenJ_Bailian - 4148 Time limit1000 ms Memory limit65536 kB OS Linux SourceEast Central North A ...

  7. 生理周期POJ 1006

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 138101   Accepted: 44225 Description 人生 ...

  8. POJ 1006 生理周期(中国剩余定理)

    POJ 1006 生理周期 分析:中国剩余定理(注意结果要大于d即可) 代码: #include<iostream> #include<cstdio> using namesp ...

  9. C++基础算法学习——生理周期

    人有体力.情商.智商的高峰日子,它们分别每隔23天.28天和33天出现一次.对于每个人,我们想知道何时三个高峰落在同一天.给定三个高峰出现的日子p,e和i(不一定是第一次高峰出现的日子),再给定另一个 ...

随机推荐

  1. Spring Boot 之 Spring Batch 批处理实践

    实践内容 从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 --> & ...

  2. Android 开发技术周报 Issue#280

    新闻 6分钟完整视频提前看光谷歌新机Pixel 4a 统一推送官方解读:消灭Android毒瘤.待机续航猛增43% Google Play细化搜索结果:可按评分.编辑推荐.最新上线过滤 教程 了解一下 ...

  3. Python list列表修改元素

    Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个). 修改单个元素 修改单个元素非常简单,直接对元素赋值即可.请看下面的例子: nums = ...

  4. django之CORS跨域请求

    对于想要利用django框架实现前后端分离,首要的问题是解决跨域请求的问题,什么是跨域请求?简单来说就是当前发起的请求的域与该请求指向的资源所在的域不一致.当协议+域名+端口号均相同,那么就是同一个域 ...

  5. 9.1 Go 反射

    9.1 Go 反射 反射:可以在运行时,动态获取变量的信息,比如变量的类型,类别 1.对于结构体变量,还可以获取到结构体的字段,方法 2.实现这个功能的是 reflect包 reflect.TypeO ...

  6. Storm-Mongodb详解

    这两天研究Trident,踩坑踩的遭不住,来和大家分享下. 首先写入数据库: 先看官方API给我们提供的方法: //这是用来辅助下面MongoInsert的简单实现类 public class Sim ...

  7. 高版本Jenkins关闭跨站请求伪造保护(CSRF)

    前言 根据官网描述,Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能. 从较旧版本的 Jenkins 升级的实例将启用 CSRF 保护和设置默认的发行者,如果之前被禁 ...

  8. Python_OpenCV学习记录01安装

    Python照样快! 众所周知,虽然Python语法简洁,编写高效,但相比C/C++运行慢很多.然 而Python还有个重要的特性:它是一门胶水语言!Python可以很容易地扩展 C/C++.Open ...

  9. 有点干货 | Jdk1.8新特性实战篇(41个案例)

    作者:小傅哥 博客:https://bugstack.cn - 汇总系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获!

  10. DFS与DP算法

    名词解释: DFS(Dynamic Plan):动态规划 DFS(Depth First Search):深度优先搜索 DFS与DP的关系 很多情况下,dfs和dp两种解题方法的思路都是很相似的,这两 ...