/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2012 panyanyany All rights reserved.
URL : http://acm.hdu.edu.cn/showproblem.php?pid=1228
Name : 1228 A + B
Date : Wednesday, February 08, 2012
Time Stage : half an hour
Result:
5328538 2012-02-08 11:53:44 Accepted 1228
0MS 152K 2470 B
C++ pyy
Test Data :
Review :
偶尔做一做简单题~~要注意zero zero + zero zero = 的情况
//----------------------------------------------------------------------------*/
#include <cstdio>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std ;
#define MEM(a, v) memset (a, v, sizeof (a)) // a for address, v for value
#define max(x, y) ((x) > (y) ? (x) : (y))
#define min(x, y) ((x) < (y) ? (x) : (y))
#define INF (0x3f3f3f3f)
#define MAXN (103)
#define MAXE (MAXN*(MAXN-1)/2)
#define DEBUG /##/
// 字符串转为数字
inline int getint (char *sz)
{
int i = -1 ;
if (!strcmp (sz, "zero"))
i = 0 ;
else if (!strcmp (sz, "one"))
i = 1 ;
else if (!strcmp (sz, "two"))
i = 2 ;
else if (!strcmp (sz, "three"))
i = 3 ;
else if (!strcmp (sz, "four"))
i = 4 ;
else if (!strcmp (sz, "five"))
i = 5 ;
else if (!strcmp (sz, "six"))
i = 6 ;
else if (!strcmp (sz, "seven"))
i = 7 ;
else if (!strcmp (sz, "eight"))
i = 8 ;
else if (!strcmp (sz, "nine"))
i = 9 ;
return i ;
}
void scan_two (int &a, int &b)
{
char sz[100], num[100] ;
int t, shift ;
// 获得整行
gets (sz) ;
// get a
a = 0 ;
shift = 0 ;
while (1)
{
// 跳过多余的空格
while (*(sz+shift) == ' ')
++shift ;
// 提取一个单词
sscanf (sz + shift, "%s", num) ;
// 计算位移
shift += strlen (num) ;
if ((t = getint(num)) == -1) // 遇到'+'或'='则跳出
break ;
a = a * 10 + t ;
}
b = 0 ;
while (1)
{
while (*(sz+shift) == ' ')
++shift ;
sscanf (sz + shift, "%s", num) ;
shift += strlen (num) ;
if ((t = getint (num)) == -1)
break ;
b = b * 10 + t ;
}
}
int main ()
{
int a, b ;
while (scan_two(a, b), a | b)
{
printf ("%d\n", a + b) ;
}
return 0 ;
}
【水题+字符串】杭电 hdu 1228 A + B
最新推荐文章于 2020-07-21 21:21:14 发布