EX12 - 1.12 Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

説明ページに戻る

問題文

1+-のみからなる式Sが1行で与えられるので、計算結果を出力してください。

例えば式S1+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|は文字列の長さ)
  • S1から始まり、その後+または-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;
}