EX12 - 1.12
Editorial
/
Time Limit: 2 sec / Memory Limit: 256 MB
問題文
1
と+
と-
のみからなる式Sが1行で与えられるので、計算結果を出力してください。
例えば式Sが1+1+1-1
であったとき、計算結果は2
です。
具体的な式Sの形式は以下の通りです。
- 式Sの1文字目は必ず1です。
- その後、「+または-」と1が交互に続きます。
- Sの最後の文字も必ず1です。
式と演算子はスペースで区切られていないことに注意してください。
ページ末尾に問題のヒントがあります。詰まったら見てみましょう。
サンプルプログラム
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; // ここにプログラムを追記 }
制約
- 1≦|S|≦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
が含まれているを出力するプログラムです。
今回の問題を解く際の参考にしてください。
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; // 1の数を表す変数 int count = 0; // 9文字の式に限定していることに注意 for (int i = 0; i < 9; i++) { // 1があればcountを増やす if (S.at(i) == '1') { count++; } } cout << count << endl; }
ヒント入力
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
解答例
必ず自分で問題に挑戦してみてから見てください。
クリックで解答例を見る
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; // 計算結果を保持する変数 int answer = 1; for (int i = 0; i < S.size(); i++) { if (S.at(i) == '+') { answer++; } if (S.at(i) == '-') { answer--; } } cout << answer << endl; }