还是A+B

题目描述:
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
输入:

测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。

输出:

对每个测试用例输出1行,即A+B的值或者是-1。

样例输入:
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
样例输出:
3
-1
-1
100

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <cctype>
 6 #include <cstring>
 7 
 8 #include <vector>
 9 #include <deque>
10 #include <list>
11 #include <map>
12 #include <set>
13 #include <stack>
14 #include <queue>
15 #include <algorithm>
16 #include <string>
17 
18 
19 #define MAXD 99999999
20 using namespace std;
21 
22 
23 
24 int main()
25 {
26 
27 
28     int i,j,k;
29 
30     int a,b;
31 
32     while(scanf("%d%d%d",&a,&b,&k)!=EOF)
33     {
34         if((a==0)&&(b==0))
35             break;
36 
37 
38         char aa[100],bb[100];
39 
40 
41         sprintf(aa,"%09d",a);
42         sprintf(bb,"%09d",b);
43 
44         int len1=strlen(aa);
45         int len2=strlen(bb);
46 
47         i=len1-1;
48         j=len2-1;
49 
50         int tag=0;
51 
52         int t=0;
53 
54 
55 
56         while((i>=0)&&(j>=0)&&(t<k))
57         {
58             if(aa[i]!=bb[j])
59             {tag=1;break;}
60 
61             i--;
62             j--;
63             t++;
64         }
65 
66         if(tag==0)
67         {
68             cout<<-1<<endl;
69         }
70         else
71         {
72             cout<<a+b<<endl;
73         }
74 
75     }
76 
77 
78 
79 
80 
81 
82 
83             
84 
85 
86 
87 
88                 
89 
90 
91 
92     return 0;
93 }

 

posted @ 2012-05-30 20:18  cseriscser  阅读(419)  评论(0编辑  收藏  举报