• 1007: 生理周期


    1007: 生理周期

    时间限制: 10 Sec  内存限制: 128 MB
    提交: 418  解决: 233
    [提交][状态][讨论版]

    题目描述

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

    输入

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

    输出

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

    样例输入

    0 0 0 0
    0 0 0 100
    5 20 34 325
    4 5 6 7
    283 102 23 320
    203 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.
    

    提示

     

    来源

    2001289

    #include <iostream>
    using namespace std;
    int main(){
     int p,e,i,d,n=0;
     while(cin>>p>>e>>i>>d){
      n=n+1;
      if(p==-1&&e==-1&&i==-1&&d==-1) break;
      p=p%23;
      e=e%28;
      i=i%33;
      while(i<=d){
       i=i+33;
      }
      while(true){
       if ( ( (i - p) % 23 == 0 ) && ( (i - e) % 28 == 0 ) ) break;
       else{
        i=i+33;
       } 
      }
        cout << "Case " << n << ": the next triple peak occurs in " << i - d << " days." << endl;
     }
     return 0;
    }

  • 相关阅读:
    SourceTree 3.0.17如何跳过注册进行安装? — git图形化工具(一)
    一键复制功能
    如何适配处理iphoneX底部的横条
    .gitignore文件如何编写?
    Spring事务管理——事务的传播行为
    数据库事务之声明式事务
    JVM中的内存分区简介
    SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
    SpringMVC中文件的上传(上传到服务器)和下载问题(一)--------上传
    HashMap和Hashtable的区别
  • 原文地址:https://www.cnblogs.com/lchzls/p/5781457.html
Copyright © 2020-2023  润新知