import java.util.Scanner;
import java.util.Stack;
/**
* @program: gradle-demo
* @description: 中文數字转阿拉伯数组【十万九千零六十 --> 109060】
* @author: Mr.WangShuang
* @create: 2018-04-10 15:30
**/
public class ChineseNumber2Int {
public static void main(String[] args) {
func();
}
public static void func(){
String aval = "零一二三四五六七八九";
String bval = "十百千万亿";
String cval = "0123456789";
String cvalTemp = "0";
int[] bnum = {10, 100, 1000, 10000, 100000000};
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
long num = 0;
String str = sc.next();
char[] arr = str.toCharArray();//输入的字符串数组
int len = arr.length;
Stack<Integer> stack = new Stack<Integer>();
for (int i = 0; i < len; i++) {//
char s = arr[i];
//跳过零
if(s == '零')
continue;
//用下标找到对应数字
int index = bval.indexOf(s);
//如果不在bval中,即当前字符为数字,直接入栈
if(index == -1){
if (cval.indexOf(s) != -1){//字符串中有阿拉伯数字
cvalTemp = "";
//索引后续阿拉伯数字
for (;i<len;i++){
s = arr[i];
if (cval.indexOf(s) != -1){
cvalTemp +=s;
}else {
stack.push(Integer.parseInt(cvalTemp));
i--;
break;
}
}
//字符串末尾全是阿拉伯数字,检索i到最后
if (i == len){
stack.push(Integer.parseInt(cvalTemp));
}
}else{
stack.push(aval.indexOf(s));
}
}else{ //当前字符为单位。
int tempsum = 0;
int val = bnum[index];
//如果栈为空则直接入栈
if(stack.isEmpty()){
stack.push(val);
continue;
}
//如果栈中有比val小的元素则出栈,累加,乘N,再入栈
while(!stack.isEmpty() && stack.peek() < val){
tempsum += stack.pop();
}
//判断是否经过乘法处理
if(tempsum == 0){
stack.push(val);
}else{
stack.push(tempsum * val);
//System.out.println(stack);
}
}
}
//System.out.println(stack);
//计算最终的和
while(!stack.isEmpty()){
num += stack.pop();
}
System.out.println(num);
}
}
}