hdu 1228-A+B

本文介绍了一个程序,该程序能够将用英文单词表示的两位数以下的数字转换成整数,并计算这些数字的和。通过对输入的英文单词进行解析,程序能够正确地识别并计算出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A+B

 

读入两个小于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 <cstdio>
#include <cmath>
#include <algorithm>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    string s,t;
    int flag=0,r,len;
    char sh[15][20]={"zero","one","two","three","four","five","six","seven","eight","nine"};
//    vector<string> sh;
//    sh.push_back("zero");sh.push_back("one");sh.push_back("two");sh.push_back("three");
//    sh.push_back("four");sh.push_back("five");sh.push_back("six");sh.push_back("seven");
//    sh.push_back("eight");sh.push_back("nine");
    while(getline(cin,s))
    {
        vector<string> x;
        stringstream ss(s);
        int sum=0,l=0;
        while(ss>>t)
        {
            x.push_back(t);
            l++;
            if(t=="+")len=l-1;
        }
        r=x.size()-(len+2);
        //cout <<len<<"   "<<r<<endl;

        //if(x[0]==sh[1])cout <<"yes"<<endl;
        //else cout <<"no"<<endl;

        int len1=len,r1=r,s1=0,s2=0,s3=0,i,j;

        for(i=0;i<len;i++)
        {
            for(j=0;j<10;j++)
                if(x[i]==sh[j])
                {
                    s1+=j*pow(10,len1-1);len1--;break;
                }
        }
        for(i=len+1;i<x.size()-1;i++)
        {
            for(j=0;j<10;j++)
                if(x[i]==sh[j])
                {
                    s2+=j*pow(10,r1-1);r1--;break;
                }
        }
        if(s1==s2&&s1==0)break;
        //cout <<s1<<"```"<<s2<<endl;
        s3=s1+s2;
        printf("%d\n",s3);
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值