50205. Secret Expression, Again_
難度:4/51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
char op_chr[4] = "+*";
char num_chr[12] = "!@#$%^&*()";
char s[1000005];
int n;
int find_num(char ch){
for(int i = 0; i < 9; i++){
if(ch == num_chr[i]) return i + 1;
}
return 0;
}
void make(){
for(int i = 0; i < n; i++){
if(s[i] != '+' && s[i] != '*'){
s[i] = '0' + find_num(s[i]);
}
}
}
void solve(){
int total_val = 0, last_num = 0;
char last_op = '+';
for(int i = 0; i < n; i++){
int now_num = 0; char now_op;
while(s[i] != '+' && s[i] != '*'){
now_num = now_num * 10 + (s[i] - '0');
i++;
if(i == n) break;
}
if(i != n) now_op = s[i];
if(last_op == '+'){
total_val += last_num;
last_num = now_num;
}
else if(last_op == '*'){
last_num *= now_num;
}
last_op = now_op;
}
total_val += last_num;
printf("%d\n", total_val);
}
int main(){
scanf("%s", s);
n = strlen(s);
make();
solve();
}