月経周期(列挙型) - 学習アルゴリズム

問題

、身体的、感情的、知的サイクルは、それぞれ、3つの月経周期を持って生まれ、そのサイクル長は23日、28日と33日です。
毎日のサイクルのピークです。そのピークはこの日で、人々が適切な方法で優れてます。
例えば、知性のピーク期間は、迅速な思考の人々は、濃度が容易になります。
3サイクル周囲に異なるので、ピークが同じ日に3サイクルに該当しない通常です。
それぞれの人のために、私たちはトリプルピーク日を知りたいです。各期間について、
我々は現在の年の最初の日から与えられます、(必ずしも最初の数日間は、ピークに表示され
、時間とピーク時間)。あなたの仕事は、日数に年の最初の日からスタートを与えられた
番号、(与えられた時間は含みません)与えられた同じ時間開始から次のトリプルピーク出力
日を(指定された時間からの日数) 。たとえば、次の所定の時間は10である三次ある
ピーク時間(これは3ではないことに注意してください)同じ、出力2のために12日です。

エントリー

入力4つの整数:P、E、I、およびD。P、eは、私は、身体的、感情的、知的サイクルのピークの時間(時間は、年の最初の日から数えている)を表します。dが与えられた時間であり、それはE、P未満、又はIであってもよいです。すべての値が負でないと未満365あり、所要時間は以下の21252です。

輸出

次の3日間のピーク(指定された時間からの日数)で、与えられた時間から始まります。

サンプル入力

0 0 0 0
0 0 0 100
5 20 34 325
4 5 6 7
283 102 23 320
203 301 203 40
-1 -1 -1 -1

サンプル出力

ケース1:次のトリプルピークは21252日に発生しました。
ケース2:次のトリプルピークは21152日に発生しました。
ケース3:次のトリプルピークは19575日に発生しました。
ケース4:次のトリプルピークは16994日に発生しました。
ケース5:次のトリプルピークは8910日で起こります。
ケース6:次のトリプルピークは10789日に発生しました。

問題解決のアイデア:
各kの日付が満たされた場合、参照するために、21252日にしようとするD + 1日までに開始し(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;
}
公開された72元の記事 ウォンの賞賛133 ・は 30000 +を見て

おすすめ

転載: blog.csdn.net/weixin_45822638/article/details/104992444