问题链接HDU1228 A + B

问题简述:参见上述链接。

问题分析

  需要将英文单词的数字转换为数字,用map比较合适。另外“+”和“=”也需要转换。

程序说明:(略)。

AC的C++语言程序如下:

/* HDU1228 A + B */

#include <iostream>
#include <map>
#include <string>

using namespace std;

const int PLUS = 100;
const int EQUAL = 200;

int main()
{
    int a, b;
    string s;
    map<string, int> m;

    m["zero"] = 0;
    m["one"] = 1;
    m["two"] = 2;
    m["three"] = 3;
    m["four"] = 4;
    m["five"] = 5;
    m["six"] = 6;
    m["seven"] = 7;
    m["eight"] = 8;
    m["nine"] = 9;
    m["+"] = PLUS;
    m["="] = EQUAL;

    for(;;) {
        a = 0;
        while(cin >> s) {
            if(m[s] == PLUS)
                break;
            a = a * 10 + m[s];
        }

        b = 0;
        while(cin >> s) {
            if(m[s] == EQUAL)
                break;
            b = b * 10 + m[s];
        }

        if(a == 0 && b == 0)
            break;
        else
            cout << a + b << endl;

    }

    return 0;
}