枚举--生理周期

*生理周期
输入给定三个高峰p,e,i,(再给定另一个指定的日子)d
小于等于365,所求的日子小于等于21252
每隔23天,28天,33天,何时落在同一天 
输出从给定日子起,下一次三个高峰同一天的日子(的天数) 
0 0 0 0
0 0 0 100
-1 -1 -1 -1
Case1: the next triple peak occurs in 21252 days.
Case2: the next triple peak occurs in 21152 days.
两个体力高峰之间根本就不需要试了,先找到第一个体力高峰的日子,
每次对体力高峰的周期进行尝试,又找体力高峰又是情商高峰的日子,
尝试找体力周期和情商双高峰间隔就是体力周期和情商高峰间隔
最小公倍数, 
*/
#include<iostream>
#include<cstdio>
#define N 21252 
using namespace std;
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);//每隔23天做一个尝试 
		for(;(k-i)%33;k+=23*28);// 体力和情商双高峰 
		cout<<"Case "<<caseNo<<
		":the next triple peak occurs in "<<k-d<<"days"<<endl; 
	} 
	return 0;
}
#include<stdio.h>
int main(){
	int p,i,e,d;
	scanf("%d%d%d%d",&p,&i,&e,&d);
	int k,cnt=1;
	for(k=d+1;k<=21252;k++){
		if((k-p)%23==0&&(k-i)%28==0&&(k-33)%33==0)
		  printf("Case %d:the next triple is the %d days",cnt++,k);
	}
	return 0;
}
//23 28 33
 
#include<stdio.h>
int main(){
	int p,i,e,d;
	scanf("%d%d%d%d",&p,&i,&e,&d);
	int k,cnt=1;
	for(k=d+1;k<=21252;k++){
		if((k-p)%23==0&&(k-i)%28==0&&(k-33)%33==0)
		  printf("Case %d:the next triple is the %d days",cnt++,k);
	}
	return 0;
}
//23 28 33

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值