枚举: 2.0 生理周期

3个周期 23,28,33分别代表3个人体不同部位最牛逼的时间周期;比如28代表girl的生理周期;23,33一样,问每次输入三个高峰期的日子,p,e,i,然后再输入d,d是给定的日子,输出从给定的日子起下一次三个高峰出现同一个日子的天数。天数最多21252天。输入-1时结束循环。

 

分析:从d+1天开始,一直到21252天,对其中每个日期k看是否满足(k-p)%23==0 &&(k-e)%28==0 && (k-i) %33==0;

代码:

#include<iostream>
#include<cmath>

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); //条件为0时循环终止,进入下一循环
		for (; (k - p) % 28; k += 23);
		for (; (k - p) % 33; k += 23 * 28);
		cout << "case " << caseNo << ":the next triple peak occurs in " << k - d << "day" << endl;

	}
	system("pause");
	return 0;
}

运行实例:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值