您的位置:首页 > 其它

EOJ3004-生理高峰

2020-04-05 18:20 260 查看

题目

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、28 天和 33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。

对于每个周期,我们会给出从当前年份的第一天开始到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当前年份第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为 10,下次出现三个高峰同天的时间是 12,则输出 2。

输入格式

第 1 行:整数 T (1≤T≤10) 为问题数
对于每组测试数据:
每行输入四个整数:p,e, i 和 d。p, e, i 分别表示体力、情感和智力高峰出现的时间(从当年的第一天开始计算)。d 是给定的时间,可能小于 p, e, 或 i。
所有给定时间是非负的并且小于 365, 所求的时间小于等于 21252(=23×28×33)。

输出格式

对于每个问题,输出一行问题的编号(格式:case #0: 等)。
然后在一行中输出从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。

样例

input
3
0 0 0 100
4 5 6 7
283 102 23 320

output
case #0:
the next triple peak occurs in 21152 days.
case #1:
the next triple peak occurs in 16994 days.
case #2:
the next triple peak occurs in 8910 days.

code

#include<bits/stdc++.h>
using namespace std;
int T,p,e,i,d,rst;
int j;
int main()
{
cin>>T;
for(j=0;j<T;++j){ cin>>p>>e>>i>>d;
for(rst=d+1;;++rst){
if((rst-p)%23==0&&(rst-e)%28==0&&(rst-i)%33==0){
printf("case #%d:\nthe next triple ",j);
printf("peak occurs in %d days.\n",rst-d);
break;
}
}
}
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
-avocado- 发布了15 篇原创文章 · 获赞 0 · 访问量 442 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: