题目1015:还是A+B
法一:模 运算
/*
1.巧用 模 事半功倍 2.a^b次方,即 pow(a,b);
*/
#include<stdio.h>
#include<math.h>
int main()
{
int n,m,k;
while(scanf("%d %d %d",&n,&m,&k)!=EOF){
if(n==0&&m==0)
break;
int tmp=pow(10,k);
if(m%tmp==n%tmp)
printf("-1\n");
else
printf("%d\n",n+m);
}
return 0;
}
法二:把数字 存成数位
/*
1.字符串必须要用strcpy()进行比较!!!别犯低级错误。。。。。
2.数组下标不是从0开始的话,要注意当有0个的情况,是否需要跳过,不然可能 会越界 或 产生错误结果。
*/
#include<stdio.h>
const int MAX=20;
int a[MAX],b[MAX];
int size1,size2;
void num2Dig(int x,int y)
{
size1=0;size2=0;
int i;
for(i=0;i<MAX;i++){ //108,8比较后两位是否一样,显然是一样:8前面要补0,不妨让初始化时自动补好0,默认是负无穷大。
a[i]=0;
b[i]=0;
}
do{
a[size1++]=x%10;
x=x/10;
}while(x!=0);
do{
b[size2++]=y%10;
y=y/10;
}while(y!=0);
}
int main()
{
int n,m,k,i;
//freopen("G:\\in.txt","r",stdin);
//freopen("G:\\our.txt","w",stdout);
while(scanf("%d %d %d",&n,&m,&k)!=EOF){
if(n==0&&m==0)
break;
num2Dig(n,m);
bool iSame=1;
for(i=0;i<k;i++){
if(a[i]!=b[i]){
iSame=0;
break;
}
}
if(iSame)
printf("-1\n");
else
printf("%d\n",n+m);
}
return 0;
}