A - A+B(解題報告)

A - A+B
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

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>
#include<string.h>
using namespace std;
int main()
{
	string a[10]={"zero","one","two","three","four","five","six","seven","eight","nine"};
	string b,t[10];
	int c,d,i,j,sum1,sum2,s,q,kong=0;
top:	while(cin>>b)
	{
		t[kong]=b;
		kong++;
		if(b=="=")
			goto next;
		
	}
next: 
	for(i=0;i<kong;i++)
		if(t[i]=="+")
			break;
		if(i==1)
		{
			for(j=0;j<10;j++)
			{
				if(t[0]==a[j])
				{
					c=j;
					break;
				}
			}
		}
		else if(i==2)
		{
			for(j=0;j<10;j++)
			{
				if(t[0]==a[j])
				{
					c=j*10;
					break;
				}
			}
			for(j=0;j<10;j++)
			{
				if(t[1]==a[j])
				{
					c+=j;
				}
			}
		}
		sum1=kong-2-i;
		if(sum1==1)
		{
			for(j=0;j<10;j++)
				if(t[i+1]==a[j])
				{
					d=j;
					break;
				}
		}
		else if(sum1==2)
		{
			for(j=0;j<10;j++)
				if(t[i+1]==a[j])
				{
					d=j*10;
					break;
				}
				for(j=0;j<10;j++)
				{
					if(t[i+2]==a[j])
					{
						d+=j;
						break;
					}
				}
		}
		if(c+d!=0)
		cout<<c+d<<endl;
		else
			goto end;
		kong=0;
		goto top;
end:
	return 0;
}




發佈了44 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章