hdu 1228 A + B (水题,map)

思路: map<string, int>即可


代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>

using namespace std;

#define mst(a,b) memset(a,b,sizeof(a))
#define REP(a,b,c) for(int a = b; a < c; ++a)
#define eps 10e-8

const int MAX_ = 1000010;
const int N = 500000;
const int INF = 0x7fffffff;

char str[MAX_];
int hash[MAX_];
int a[MAX_];
map<string, int> mp;


int main(){
	int T, n, m, numa = 0, numb = 0;
	bool flag = 0;
	string s;
	//scanf("%d", &T);
	mp["one"] = 1;
	mp["two"] = 2;
	mp["three"] = 3;
	mp["four"] = 4;
	mp["five"] = 5;
	mp["six"] = 6;
	mp["seven"] = 7;
	mp["eight"] = 8;
	mp["nine"] = 9;

	while(cin>>s){

	    if(s[0] == '='){
	        if(numa == 0 && numb == 0)break;
            printf("%d\n", numa + numb);
            flag = 0;
            numa = numb= 0;
	    }

        if(s[0] == '+'){
            flag = 1;
            continue;
        }

        if(!flag){
            numa = numa*10 + mp[s];
        }
        else {
            numb = numb* 10 + mp[s];
        }

	}
	return 0;
}


你可能感兴趣的:(hdu 1228 A + B (水题,map))