EX11 - 足したり引いたり
解説
/
実行時間制限: 2 sec / メモリ制限: 1024 MB
問題文
1
と+
と-
のみからなる式 S が 1 行で与えられるので、計算結果を出力してください。
例えば式 S が 1+1+1-1
であったとき、計算結果は 2 です。
具体的な式 S の形式は以下の通りです。
- 式 S の 1 文字目は必ず
1
です。 - その後、「
+
または-
」と1
が交互に続きます。 - S の最後の文字も必ず
1
です。
式と演算子はスペースで区切られていないことに注意してください。
ページ末尾に問題のヒントがあります。詰まったら見てみましょう。
サンプルプログラム
S = input() # ここにプログラムを追記
制約
- 1 \le |S| \le 100 (|S| は文字列の長さ)
- S は
1
から始まり、その後「+
または-
」と1
が交互に続き、1
で終わる
入力
入力は次の形式で標準入力から与えられます。
S
出力
Sの計算結果を出力してください。
出力の最後には改行が必要です。
ジャッジでは以下の入力例以外のケースに関してもテストされることに注意。
入力例1
1+1+1-1
出力例1
2
問題文中で説明した入出力です。
入力例2
1-1-1-1-1-1
出力例2
-4
計算結果は負の値になることもあります。
入力例3
1
出力例3
1
入力は 1
だけで終わることもあります。
入力例4
1-1-1+1+1+1+1-1+1-1+1-1+1
出力例4
3
ヒント
次のプログラムは 9 文字の式 S にいくつ 1
が含まれているかを出力するプログラムです。
今回の問題を解く際の参考にしてください。
クリックでヒントプログラムを見る
S = input() count = 0 # 9 文字の式に限定していることに注意 for i in range(9): if S[i] == "1": count += 1 print(count)
ヒント入力
1-1-1+1+1
ヒント出力
5
テスト入出力
書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。
クリックでテスト入出力を見る
テスト入力1
1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1+1
テスト出力1
-25
テスト入力2
1+1+1+1+1+1+1+1+1+1+1+1+1
テスト出力2
13
テスト入力3
1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1
テスト出力3
-33
テスト入力4
1+1-1+1-1+1-1+1-1+1-1+1-1+1-1+1+1-1-1+1+1-1-1+1+1+1-1-1-1+1
テスト出力4
2
解答例
必ず自分で問題に挑戦してみてから見てください。
クリックで解答例を見る
S = input() # 計算結果を保持する変数 answer = 1 for i in range(len(S)): if S[i] == "+": answer += 1 if S[i] == "-": answer -= 1 print(answer)
in
の後ろに文字列を指定することで、文字に対して繰り返し処理を行うこともできます。
S = input() # 計算結果を保持する変数 answer = 1 for c in S: if c == "+": answer += 1 if c == "-": answer -= 1 print(answer)