今天闲着没事,就把浙大的上机题目整理做了下。。
第一题:
A + B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 462 Accepted Submission(s): 290 Problem 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
>
using
namespace
std;
string
strnum[
10
]
=
...
{
" zero " , " one " , " two " , " three " , " four " , " five " , " six " , " seven " , " eight " , " nine " }
;
int
strToint(
string
str)
...
{
int i; for (i = 0 ;i < 10 ;i ++ ) if (str == strnum[i]) return i; }
int
sum;
bool
Input()
...
{
string first,second; int num1 = 0 ,num2 = 0 ; cin >> first; cin >> second; if (second != " + " ) ... {
num1 = strToint(first) * 10 + strToint(second); cin >> first; } else num1 = strToint(first); cin >> first; cin >> second; if (second != " = " ) ... {
num2 = strToint(first) * 10 + strToint(second); cin >> second; } else num2 = strToint(first); sum = num1 + num2; if ( ! num1 &&! num2) return false ; else return true ; }
int
main()
...
{
while (Input()) cout << sum << endl; return 0 ; }
第二题:
还是A+B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 799 Accepted Submission(s): 403 Problem Description
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即A+B的值或者是-1。
Sample Input
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
Sample Output
3
-1
-1
100
#include
<
iostream
>
using
namespace
std;
int
a,b,k;
int
dive;
int
main()
...
{