[伯俊]1436号映画監督


[伯俊]1436号映画監督
1.質問
666は末日を表す数字だそうです.そのため、多くの大きな映画では666のタイトルが使用されています.映画監督郅は世界最後のシリーズ映画の監督である.ジョージ・ルーカスはスターウォーズを制作する際、『スターウォーズ1』『スターウォーズ2』『スターウォーズ3』『スターウォーズ4』『スターウォーズ5』『スターウォーズ6』と同様に命名され、ピーター・ジャクソンは『指輪王』を制作する際、『指輪王1』『指輪王2』『指輪王3』と同様に映画と命名された.
しかし、ジョージ・ルーカスとピーター・ジャクソンを超えたことを証明するために、ジョーは映画の名前を違うものに変えることにした.
末日数字とは、ある数字のうち少なくとも6つが連続して3つ以上の数字であることを意味する.最小の末日数字は666で、次いで1666266663666です.に等しい
そのため、ʤは第1部映画の名前を世界末日666、第2部映画の名前を世界末日1666と命名した.一般的に、N本目の映画のタイトルは世界の終わり(N番目の小さな終わりの数字)に等しい.
プログラムを作成して、N本目の映画タイトルの数字を印刷してください.ʤはいつもこのシリーズを順番に作って、他の映画を作らない.
2.入力
最初の行には、数字Nが与えられる.Nは10000以下の自然数である.
3.出力
第1行目には、第N本目の映画タイトルの数字が出力される.
4.解答
  • 歳で6人連続の数字が出るたびにcountが増加する.
  • の3つの数字が6に連続しているかどうかを判断する関数は、現在の数字を1つずつ切り捨て、6であればcountを増やし、6でなければcountは0になる.countが3の場合はtrueを返し、数字の末尾に移動するとfalseを返します.
  • countがnと等しい場合、現在の数値が返されます.
  • 5.最初のコードと異なる点
  • の3つの位置が連続して6であるか否かを判定する関数で、重複文の開始時にcountを判定すると、終了位置が6である場合、countが3であっても条件文に合致しないという問題がある.
  • 複文は全部書き終わったので、もう一度条件文を書きたいのですが、結局条件文を複文の最後の場所に移して解決しました.
  • 6.コード
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    bool check(int number) {
        int count = 0;
        string str = to_string(number);
        for (int i = 0; i < str.size(); i++){
            if (str[i] == '6') count++;
            else count = 0;
            
            if (count == 3) return true;
        }
        return false;
    }
    
    int main(void) {
        cin.tie(NULL);
        ios_base::sync_with_stdio(false);
    
        int n;
        cin >> n;
    
        int count = 0;
        int number = 0;
        while (count<n){
            count = check(number++) ? count + 1 : count;
        }
        cout << number-1;
    }