游客 Signup | Login
中文 | En

2494 - 英文数字

在这个问题中,你将会给出一个或多个用英文表示的数。你的任务就是把这些英文标识的数翻译为阿拉伯数字。
给定数字的范围从-999,999,999到999,999,999.以下一些详细的英文单词表,你的程序将会使用到:
negative,zero,one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,fourteen,fifteen,
sixteen,seventeen,eighteen,nineteen,twenty,thirty,forty,sixty,seventy,eighty,ninety,hundred,thousand,million.

Input

输入注意事项:
1、负数将会被描述为negative。

2、当“thousand”可以使用时,“hundred”不能用。例如:1500会被描述为“one thousand five hundred”而不是"fifteen hundred"

结尾以空行结束

Output

每个结果占一行

Examples

Input

six
negative seven hundred twenty nine
one million one hundred one
eight hundred fourteen thousand twenty two

Output

6
-729
1000101
814022

Solution C

#include<stdio.h>
#include<string.h>
int main()
{
	char s[10],ch;
    int sum=0,ans=0;
	while(scanf("%s",s)!=EOF)
	{
		if(!strcmp(s,"negative"))      printf("-");
        else if(!strcmp(s,"zero"))     sum+=0;
        else if(!strcmp(s,"one"))      sum+=1;
        else if(!strcmp(s,"two"))      sum+=2;
        else if(!strcmp(s,"three"))    sum+=3;
        else if(!strcmp(s,"four"))     sum+=4;
        else if(!strcmp(s,"five"))     sum+=5;
        else if(!strcmp(s,"six"))      sum+=6;
        else if(!strcmp(s,"seven"))    sum+=7;
        else if(!strcmp(s,"eight"))    sum+=8;
        else if(!strcmp(s,"nine"))     sum+=9;
        else if(!strcmp(s,"ten"))      sum+=10;
        else if(!strcmp(s,"eleven"))   sum+=11;
        else if(!strcmp(s,"twelve"))   sum+=12;
        else if(!strcmp(s,"thirteen")) sum+=13;
        else if(!strcmp(s,"fourteen")) sum+=14;
        else if(!strcmp(s,"fifteen"))  sum+=15;
        else if(!strcmp(s,"sixteen"))  sum+=16;
        else if(!strcmp(s,"seventeen"))sum+=17;
        else if(!strcmp(s,"eighteen")) sum+=18;
        else if(!strcmp(s,"nineteen")) sum+=19;
        else if(!strcmp(s,"twenty"))   sum+=20;
        else if(!strcmp(s,"thirty"))   sum+=30;
        else if(!strcmp(s,"forty"))    sum+=40;
        else if(!strcmp(s,"fifty"))    sum+=50;
        else if(!strcmp(s,"sixty"))    sum+=60;
        else if(!strcmp(s,"seventy"))  sum+=70;
        else if(!strcmp(s,"eighty"))   sum+=80;
        else if(!strcmp(s,"ninety"))   sum+=90;
        else if(!strcmp(s,"hundred"))  sum*=100;
        else if(!strcmp(s,"thousand"))
		{
			ans+=sum*1000;
            sum=0;
		}
        else if(!strcmp(s,"million"))
		{
            ans+=sum*1000000;
            sum=0;
		}

        ch=getchar();

        if(ch=='\n')
		{
			printf("%d\n",ans+sum);
            sum=0;
            ans=0;
		}
	}
    return 0;
 }

Solution C++

#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100
char s[maxn];
int sum=0,ans=0;
int main()
{
    while(scanf("%s",s)!=EOF)
    {
        if(!strcmp(s,"negative"))printf("-");
        else if(!strcmp(s,"zero"))sum+=0;
        else if(!strcmp(s,"one"))sum+=1;
        else if(!strcmp(s,"two"))sum+=2;
        else if(!strcmp(s,"three"))sum+=3;
        else if(!strcmp(s,"four"))sum+=4;
        else if(!strcmp(s,"five"))sum+=5;
        else if(!strcmp(s,"six"))sum+=6;
        else if(!strcmp(s,"seven"))sum+=7;
        else if(!strcmp(s,"eight"))sum+=8;
        else if(!strcmp(s,"nine"))sum+=9;
        else if(!strcmp(s,"ten"))sum+=10;
        else if(!strcmp(s,"eleven"))sum+=11;
        else if(!strcmp(s,"twelve"))sum+=12;
        else if(!strcmp(s,"thirteen"))sum+=13;
        else if(!strcmp(s,"fourteen"))sum+=14;
        else if(!strcmp(s,"fifteen"))sum+=15;
        else if(!strcmp(s,"sixteen"))sum+=16;
        else if(!strcmp(s,"seventeen"))sum+=17;
        else if(!strcmp(s,"eighteen"))sum+=18;
        else if(!strcmp(s,"nineteen"))sum+=19;
        else if(!strcmp(s,"twenty"))sum+=20;
        else if(!strcmp(s,"thirty"))sum+=30;
        else if(!strcmp(s,"forty"))sum+=40;
        else if(!strcmp(s,"fifty"))sum+=50;
        else if(!strcmp(s,"sixty"))sum+=60;
        else if(!strcmp(s,"seventy"))sum+=70;
        else if(!strcmp(s,"eighty"))sum+=80;
        else if(!strcmp(s,"ninety"))sum+=90;
        else if(!strcmp(s,"hundred"))
        {
            sum*=100;
        }
        else if(!strcmp(s,"thousand"))
        {
            ans+=sum*1000;
            sum=0;
        }
        else if(!strcmp(s,"million"))
        {
            ans+=sum*1000000;
            sum=0;
        }
        char ch=getchar();
        if(ch=='\n')
        {
            printf("%d\n",ans+sum);
            sum=0;
            ans=0;
        }
    }
    return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题