还是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 }