第10回LanqiaoカップC言語グループA-シーケンスの合計

1.問題の説明:

項目4から始まる1、1、1、3、5、9、17、…のシーケンスが与えられると、各項目は最初の3つの項目の合計になります。アイテム20190324の下4桁を検索します。
回答提出
これは空欄を埋めた結果です。結果を計算して出力を提出するだけです。この質問の結果は4桁の整数です(ヒント:回答の1000桁は0ではありません)。回答を送信するときは、この整数のみを出力します。余分なコンテンツを出力すると、スコアを付けることができなくなります。
入力入力
なし。
出力
整数を出力します。
ヒント
出力ステートメントに答えを入れてください。たとえば、printfまたはcoutはC / C ++言語で使用できます。
注:出力する必要があるのは整数です。余分なコンテンツは出力しないでください。

2.思考分析:

トピックを分析すると、ループ内のプロセス全体をシミュレートし、4つの変数t、a、b、cを宣言して、前の3つの項目の現在の値を更新できることがわかります。tは、前の合計の現在の合計を記録するために使用されます。 3つのアイテム(t = a + b + c、a = b、b = c、c = t)。これにより、前の3つのアイテムの現在の値がループ内で更新されます。これは、番号20190324が大きすぎる可能性があるためです。この問題では、20203324番目の項目の最後の4桁を解決する必要があります。はい、数値に4桁を予約する場合、最後の4桁と最後の4桁が保持されるように、この数値の残りを10000にするだけで済みます。は、a、b、およびcの合計の最後の4つだけです。数字は関連しており、他の数字とは関係がないため、a、b、およびcを更新するときに、残りの10000を取得して、最後の数字にします。 4桁が保持され、残りが取得された後はオーバーフローは発生しません。ループ開始の開始位置を決定する方法は?最初に、a、b、c、t = 1、1、1、0、カウント変数カウントを定義します。4番目の項目を出力する必要がある場合は、ループを1回実行する必要があります。このとき、カウント= 3 、ループ判定条件カウント<4、次のループカウント= 4がループを終了する条件を満たさない場合、ループt = a + b + c = 3を実行するため、カウントの初期値は3と定義できます。最初の項を解くと、ループの判断条件はいくつになります(簡単な例でループの開始位置を決定できます)

3.コードは次のとおりです。

if __name__ == '__main__':
    a, b, c = 1, 1, 1
    count, t = 3, 0
    while count < 20190324:
        t = (a + b + c) % 10000
        a = b % 10000
        b = c % 10000
        c = t % 10000
        count += 1
    print(t)

 

おすすめ

転載: blog.csdn.net/qq_39445165/article/details/115049342