P - A + B(第二季水)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P - A + B(第二季水)相关的知识,希望对你有一定的参考价值。

Description

         读入两个小于100的正整数A和B,计算A+B.       
         需要注意的是:A和B的每一位数字由对应的英文单词给出.        
                

Input

测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.        
                

Output

对每个测试用例输出1行,即A+B的值.        
                

Sample Input

one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
                

Sample Output

3 90 96
 
#include <iostream>
#include <string>
using namespace std;
int g(string str)
{
    if(str=="zero")return 0;
    if(str=="one")return 1;
    if(str=="two")return 2;
    if(str=="three")return 3;
    if(str=="four")return 4;
    if(str=="five")return 5;
    if(str=="six")return 6;
    if(str=="seven")return 7;
    if(str=="eight")return 8;
    if(str=="nine")return 9;
}
int main()
{
    string a[15];
    while(cin>>a[0]>>a[1]>>a[2]){
        int i,k1,k2;
        for(i=3;;i++){
            cin>>a[i];
            if(a[i]=="=")break;
        }
        if(a[0]=="zero"&&a[1]=="+"&&a[2]=="zero"&&a[3]=="=")break;
        if(a[1]=="+"){
            k1=g(a[0]);
            if(a[3]=="=")k2=g(a[2]);
            else k2=g(a[2])*10+g(a[3]);
        }
        else{
            k1=10*g(a[0])+g(a[1]);
            if(a[4]=="=")k2=g(a[3]);
            else k2=g(a[3])*10+g(a[4]);
        }
        cout<<k1+k2<<endl;
    }
    //system("pause");
    return 0;
}


依旧灵活使用字符串即可

 
 

以上是关于P - A + B(第二季水)的主要内容,如果未能解决你的问题,请参考以下文章

J - A + B Problem II(第二季水)

D - Counterfeit Dollar(第二季水)

N - Robot Motion(第二季水)

W - Bitset(第二季水)

A - 高精度(大数)N次方(第二季水)

I - Long Distance Racing(第二季水)