AtCoder ABC 127 B – Algae Python解説

スポンサーリンク

Algae

ある池に生えている藻類は、以下のように成長します。
西暦 i 年になる瞬間に生えている重さの合計を xi グラムとすると、以下の式が成り立ちます
xi+1​=r * xi​−D
rDx2000​ が与えられます。x2001​, …, x2010​ を計算し、順に出力してください。

AtCoder Beginner Contest 「Algae」

この問題は前項の解が使われる漸化式なので、そこにだけ注意していきましょう。

r, d, x = map(int, input().split())

dp = [0] * 10
dp[0] = r * x - d

for i in range(1, 10):
    dp[i] = r * dp[i - 1] - d
    
for i in dp:
    print(i)

必要な計算式は問題文のまま実装すればよいので難しくはないはずです。
漸化式で使う配列と初項を用意し、あとはfor文で10回ループを回して完了です。

r, d, x = map(int, input().split())

def algae(n):
    if n == 0:
        return r * x - d
    else:
        return r * algae(n - 1) - d
    
for i in range(10):
    print(algae(i))

こちらは再帰を使った解き方です。一般的に再帰関数はメモリを使うので注意が必要ですが、今回の問題では10回程度なので気にせず使えます。