結果
| 問題 |
No.222 引き算と足し算
|
| コンテスト | |
| ユーザー |
kichirb3
|
| 提出日時 | 2018-03-17 13:36:47 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 1,000 ms |
| コード長 | 1,104 bytes |
| コンパイル時間 | 5,688 ms |
| コンパイル使用メモリ | 220,652 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-12-24 00:25:39 |
| 合計ジャッジ時間 | 5,750 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 31 |
ソースコード
// No.222 引き算と足し算
// https://yukicoder.me/problems/no/222
//
#include <iostream>
#include <vector>
#include <string>
#include <regex>
using namespace std;
int solve(string s);
vector<string> split(string&& s, regex&& pattern);
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
string s;
cin >> s;
int ans = solve(s);
cout << ans << endl;
}
int solve(string s) {
string t(s, 1);
regex rx(R"(\D)");
smatch result;
char op;
if (regex_search(t, result, rx)) {
if (result[0] == '+')
op = '-';
else
op = '+';
s[result.position()+1] = ' ';
vector<string> numbers = split(move(s), regex(" "));
int a = stoi(numbers[0]);
int b = stoi(numbers[1]);
if (op == '-')
return a - b;
else
return a + b;
}
return 0;
}
vector<string> split(string&& s, regex&& pattern)
{
sregex_token_iterator first(s.begin(), s.end(), pattern, -1);
sregex_token_iterator last;
return vector<string>(first, last);
}
kichirb3