首页 > 技术文章 > 模拟(map)

nuoyanli 2018-11-30 17:12 原文

 594-还是A+B

题目来源:http://acm.nyist.cf/problem/594

 题目描述:

输入两个小于100的正整数A和B,输出A+B;

A,B均为每位数字对应的英文字母,结果为十进制数。

输入描述:

A,B。

输出描述:

A+B;

样例输出:

one + two =
one + two zero =

 样例输出:

 3

21

#include<bits/stdc++.h>
using namespace std;
string a[]= {"zero","one","two","three","four","five","six","seven","eight","nine"};
int main()
{
    map<string,int> num;
    for(int i=0; i<10; i++)
        num[a[i]]=i;
    char a[105],b[105];
    while(~scanf("%s%s",a,b))
    {
        int x,y;
        x=num[a];
        if(b[0]!='+')
        {
            x=x*10+num[b];
            scanf("%s",a);
        }
        scanf("%s%s",a,b);
        y=num[a];
        if(b[0]!='=')
        {
            y=y*10+num[b];
            scanf("%s",a);
        }
        printf("%d\n",x+y);
    }
    return 0;
}

 

推荐阅读