トピックの説明
ジンジンのお小遣いはいつも自分で管理している。毎月初めに、母はジンジンに 300 元を渡し、ジンジンが今月の出費を予算化し、実際の出費は常に予算と同じになります。ジンジンに貯金の仕方を学ぶために、母親はいつでもジンジンに100ドル全額を預けて、年末にはジンジンに20%を上乗せすることを提案した。そこでジンジンさんは貯蓄計画を立てました。毎月初めに母親からお小遣いを受け取った後、月末までに100元以上、あるいはちょうど100元が手に入りそうな場合は、100元全額を貯金することにしました。そのうちのお金は母に預けられ、残りのお金は私の手元にあります。たとえば、11月初旬、ジンジンさんの手元にはまだ83元があり、母親はジンジンさんに300元を渡した。ジンジンさんは 11 月に 180 元を使う予定なので、母親と一緒に 200 元を貯金し、183 元を自分用に残しておきます。11月末までにジンジンさんの手元には3元が残ることになる。ジンジンさんは、この貯蓄計画の主なリスクは、母親に預けたお金を年末までに引き出せないことだと気づきました。もしかしたら、ある月の初めに、ジンジンさんの手持ちのお金と母親から今月もらったお金では、今月の当初の予算が足りなくなる可能性があります。そうなると、ジンジンさんは今月は節約して予算を圧迫しなければなりません。では、2004 年 1 月から 12 月までの Jinjin の月次予算に基づいて、これが起こるかどうかを判断してください。そうでない場合は、母親がジンジンが普段貯めているお金に 20% を加えたものをジンジンに返した後、2004 年末までにジンジンがどのくらいのお金を手にすることになるかを計算してください。
私のコード
class Solution:
def __init__(self) -> None:
pass
def solution(self, budgets):
result = None
# TODO: 请在此编写代码
mom = 0
my = 0
f = 0
for i in range(12):
new = my + 300 - budgets[i]
if new < 0 :
f = -1-i
return f
yu = new//100*100
mom += yu
my = new - yu
# print(i+1,mom,my,yu)
result = mom * 1.2 +my
# 考虑整数和小数
left = str(result).split('.')[1]
if int(left) == 0:
result = int(result)
return result
if __name__ == "__main__":
budgets = []
for i in range(12):
try:
budgets.append(float(input().strip().split()[0]))
except: # 这个操作:case通过率:70.0%
budgets.append(0.0)
sol = Solution()
result = sol.solution(budgets)
print(result)
入力と出力の説明
入力:
12 行のデータ。各行には 350 未満の非負の整数が含まれており、それぞれ 1 月から 12 月までの Jinjin の予算を表します。
出力:
整数。貯蓄計画の実行中、特定の月に資金が不足している場合は、-X を出力します。X は、この状況が発生した最初の月を示します。そうでない場合は、2004 年末にジンジンの手にある資金がいくらになるかを出力します。 。
残りの 30% のケースはどこにあるのでしょうか?
この問題は2回発生しましたが、前回は通過率50%でしたが、今回は空入力の処理を追加したところ、通過率が70%まで上がりました。
では、残りの30%はどこにあるのか!