計蒜客: T1194 生理週期(枚舉)

題目鏈接:生理週期

解題思路:從d+1天開始試,先找到體力值高峯的日子,然後再找體力和情感雙高峯的日子(找到體力高峯的日子後只需要考慮下一個體力高峯的日子是不是情感高峯),然後再找體力、情感、智力三高峯的日子。爲了省時我們可以跳着試,因爲第一個體力高峯的日子到第二個體力高峯的日子沒有必要去試,所以可以在找體力、情感雙高峯的日子的時候就可以用體力高峯的週期當做累加條件。同理在找三高峯的日子的時候就可以以體力、情感雙高峯的週期來累加測試。

#include<iostream>
using namespace std;

int main(){
	int p,e,i,d;
	int k;    //從d+1天開始試,k爲三個高峯的日子
	
	cin>>p>>e>>i>>d;
	if(p<0 || e<0 || i<0 || d<0){
		exit(0);
	} 
	//先找體力爲高峯的日子
	k = d+1;
	while((k-p)%23!=0){
		k++;
	}
	//再找體力、情感雙高峯的日子
	while((k-e)%28!=0){
		k += 23;
	}		
	//再找三高峯的日子
	while((k-i)%33!=0){
		k += 23*28;
	} 
	cout<<k-d;
	return 0;
	
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章