A45700. 生理周期人生来就有三个生理周期, 分别为体力、 感情和智力周期, 它们的周期长度为 23 天、 28 天和 33 天。 每一个周期中有一天是高峰。 在高峰这天, 人会在相应的方面表现出色。 例如, 智力周期的高峰, 人会思维敏捷, 精力容易高度集中。 因为三个周期的周长不同, 所以通常三个周期的高峰不会落在同一天。 对于每个人, 我们想知道何时三个高峰落在同一天。 对于每个周期, 我们会给出从当…
填空题
中等
知识点
题目描述
生理周期
人生来就有三个生理周期, 分别为体力、 感情和智力周期, 它们的周期长度为 23 天、 28 天和 33 天。 每一个周期中有一天是高峰。 在高峰这天, 人会在相应的方面表现出色。 例如, 智力周期的高峰, 人会思维敏捷, 精力容易高度集中。 因为三个周期的周长不同, 所以通常三个周期的高峰不会落在同一天。 对于每个人, 我们想知道何时三个高峰落在同一天。 对于每个周期, 我们会给出从当前年份的第一天开始, 到出现高峰的天数(不一定是第一次高峰出现的时间) 。 你的任务是给定一个从当年第一天开始数的天数, 输出从给定时间开始(不包括给定时间) 下一次三个高峰落在同一天的时间(距给定时间的天数) 。 例如: 给定时间为 10, 下次出现三个高峰同天的时间是 12,则输出 2(注意这里不是 3) 。
时间限制: 1000
内存限制: 65536
输入
一行, 包含四个整数: p, e, i 和 d, 相邻两个整数之间用单个空格隔开。 p, e, i 分别表示体力、 情感和智力高峰出现的时间(时间从当年的第一天开始计算) 。 d 是给定的时间, 可能小于 p, e, 或 i。 所有给定时间是非负的并且小于等于 365, 所求的时间小于等于 21252。
输出
一个整数, 即从给定时间起, 下一次三个高峰同天的时间(距离给定时间的天数) 。
样例输入
4 5 6 7
样例输出
16994
参考答案
import java.util.Scanner;
public class Main {
public static void main(String []ages)
{
Scanner sc=new Scanner(System.in);
int show=0;
while(true)
{
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int d=sc.nextInt();
if(a!=-1||b!=-1||c!=-1||d!=-1)
{
show++;//打印Case的数
int dex=d+1;//步数
int num=23*28;//节省计算
while((dex-a)%23!=0)//若步数刚好停留在为1的点时,退出循环
dex++;
while((dex-b)%28!=0)//看此时的dex是否在第二行1的位置上
dex+=23;
while((dex-c)%33!=0)//看此时的dex是否在第三行1的位置上
dex+=num;
System.out.println("Case "+show+": the next triple peak occurs in "+(dex-d)+" days.");
}
else
break;
}
}
}
上一题
下一题