View Code of Problem 16

#include <bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    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;
    string num[10] = {"zero","one", "two", "three", "four", "five","six", "seven","eight", "nine"};
    for(int i = 0;i<t; i++){
        int f;
        cin>>f;
        string num1[10], num2[10];
        int cnt1= 0, cnt2 = 0;
        while(cin>>num1[cnt1]){
            if(num1[cnt1]=="+"){
                break;
            }
            cnt1++;
        
        }
        while(cin>>num2[cnt2]){
            if(num2[cnt2]=="="){
                break;
            };
            cnt2++;
        }
        int a, b;
        if(num1[0][0]>='0'&&num1[0][0]<='9'){
            a = stoi(num1[0]);
        }
        else{
            a = 0;
            for(int i = 0; i<cnt1; i++){
                a += m[num1[i]]*pow(10,cnt1-i-1);
            }
        }

        if(num2[0][0]>='0'&&num2[0][0]<='9'){
            b = stoi(num2[0]);
        }
        else{
            b = 0;
            for(int i = 0; i<cnt2; i++){
                b += m[num2[i]]*pow(10,cnt2-i-1);
            }
        }
        int ans = a+b;
        if(f==0){
            cout<<ans<<endl;
        }
        else{
            string s = to_string(ans);
            cout<<num[s[0]-'0'];
            for(int i = 1; i<s.size(); i++){
                cout<<" "<<num[s[i]-'0'];
            }
            cout<<endl;
        }

    }
    return 0;
}

Double click to view unformatted code.


Back to problem 16