题目1015:还是A+B

来源:互联网 发布:网络建设实施方案 编辑:程序博客网 时间:2024/06/12 23:03
题目描述:
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
输入:

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

输出:

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

样例输入:
1 2 111 21 1108 8 236 64 30 0 1
样例输出:
3-1-1100
#include<iostream>#include<cstring>#include<stdlib.h>using namespace std;int main(){int numa[8],numb[8],i,sameNum;//numa,numb是用来存储8位数字的,sameNum表示多少位相同int a,b,temp;while(1){memset(numa,0,8*sizeof(int));//不要忘记size大小要乘以每个数据类型的大小memset(numb,0,8*sizeof(int));//此处是为了比较不用位数的数字而填充高位的0cin>>a>>b;if(a==0 && b==0)break;cin>>sameNum;temp=a;for(i=0;temp;i++)//将numa从各位填满{numa[i]=temp%10;temp/=10;}temp=b;for(i=0;temp;i++)//将numb从各位填满{numb[i]=temp%10;temp/=10;}i=0;int flag=1;while(sameNum>0){if(numa[i]!=numb[i]){cout<<a+b<<endl;flag=0;break;}else{sameNum--;i++;}}if(flag){cout<<-1<<endl;}}return 0;}