EX12 - 1.12
Editorial
/
/
Time Limit: 2 sec / Memory Limit: 256 MiB
問題文
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;
}