程序设计与算法(二)算法基础-郭炜 1.2.1 生理周期

程序设计与算法(二)算法基础-郭炜 1.2.1 生理周期

人有体力、情商、智商的高峰日子,它们分别每隔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。
输出:从给定日子起,下一次三个高峰同一天的日子的天数。
从d+1天开始,一直试到第21252天,对其中每个日期k,看是否满足
(k - p)%23 ==0&&(k - e)%28 ==0&&(k - i) % 33 ==0
如何试得更快?
跳着试!

#include <iostream>
#include<cstdio>
using namespace std;
#define N 21252 

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 - e) % 28;k += 23)
			{
				for(;(k - i) % 33;k += 23 * 28)
				{
					cout << "Case" << caseNo<<":the next triple peak occurs in" << k - d<<"days."<<endl;
				}
			}
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值