質問: ある国のある年の人口は6480万人で、その後、最初の人口増加率は0.793%でしたが、その次の人口増 ある国のある年の人口は6480万人で、その後、最初の人口増加率は0.793%でしたが、その次の人口増加率は0.012%減りました。この後、人口増加率の減少幅は0.00006%ずつ減り、最終的に人口増加率は減少しなくなりました。この後、人口増加率は0.0002%ずつ増え、最終的に人口増加率は0%になりました。ただし、最後の0%になるときのみ、増加幅は0.0002%以下なら何%でもよいものとします。 この時、 1. 人口のピークは何年後で、その時の人口は何人ですか? 2. 静止人口は何人ですか?
回答: この問題は正しいのですか?静止するまで2000年以上かかるんだけど。 以下プログラムです。python3です。_は半角スペースです。 from functools import lru_cache @lru_cache(maxsize=none) def perwidth(n): _if n == 0: __return 0.00793 _elif 1 <= n <= 200: __return round(perwidth(n-1) - (0.00012-0.0000006*(n-1)),7) _else: __if perwidth(n-1) + 0.000002 < 0: ___return round(perwidth(n-1) + 0.000002,7) __else: ___return 0 @lru_cache(maxsize=none) def population(n): _if n == 0: __return 648000000 _else: __return int(population(n-1) * (1+perwidth(n-1))) print("現在の人口:" + str(population(0))) print("現在から1年後までの人口増加率:{0:.7f}".format(perwidth(0))) for n in range(1,3000): _print(str(n) + "年後の人口:" + str(population(n))) _print("{0}年後から{1}年後までの人口増加率:{2:.7f}".format(n,n+1,perwidth(n))) 実行結果(問いに関係するところのみ) 82年後から83年後までの人口増加率:0.0000826 83年後の人口:878374363 83年後から84年後までの人口増加率:0.0000118 84年後の人口:878384727 84年後から85年後までの人口増加率:-0.0000584 85年後の人口:878333429 85年後から86年後までの人口増加率:-0.0001280 86年後の人口:878221002 (1)84年後、8億7838万4727人 2262年後から2263年後までの人口増加率:-0.0000060 2263年後の人口:8903164 2263年後から2264年後までの人口増加率:-0.0000040 2264年後の人口:8903128 2264年後から2265年後までの人口増加率:-0.0000020 2265年後の人口:8903110 2265年後から2266年後までの人口増加率:0.0000000 2266年後の人口:8903110 (2)890万3110人 本当にこれでいいのか?この前の質問でも言いました通り、私はit企業勤めでも、フリーランスのプログラマーでもないので、プログラムの内容はよく吟味してください。