#include<stdio.h> #include<math.h> int main() { int a,b,k,s; while(~scanf("%d%d%d",&a,&b,&k),a||b) { s=1; while(k--) s*=10; //printf("%d\n",s); if (a%s==b%s) printf("-1\n"); else printf("%d\n", a+b); } return 0; }
下面都是wa
#include<stdio.h>
#define min(a,b) a<=b?a:b
//返回数的位数,并拆分
int fun(int num,int temp[])
{
int i=0;
while(num)
{
temp[i++]=num%10;
num/=10;
}
return i;
}
int main()
{
int a,b,k;int c[8],d[8];int i,j;
while(~scanf("%d%d%d",&a,&b,&k),a||b)
{
int len1=fun(a,c),len2=fun(b,d);
int len=min(len1,len2);
if(k>len)
{
for(i=0,j=0;i<len&&j<len;i++,j++)
if(c[i]!=d[j])
{
printf("%d\n",a+b);
break;
}
if(i==len||j==len)//不加上,会输出两个结果
printf("-1\n");
}
else if(k=len1&&k==len2)
{
for(i=0,j=0;i<k&&j<k;i++,j++)
if(c[i]!=d[j])
{
printf("%d\n",a+b);
break;
}
if(i==k||j==k)//不加上,会输出两个结果
printf("-1\n");
}
else
for(i=0,j=0;i<k&&j<k;i++,j++)
if(c[i]!=d[j])
{
printf("%d\n",a+b);
break;
}
if(i==k||j==k)//不加上,会输出两个结果
printf("-1\n");
}
return 0;
}
//程序wa啦,应为108 8 2,看做满足条件
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define min(a,b) a<b?a:b
int main()
{
char a[6],b[6],*c,*d;
int k;int len1,len2,len;int num1,num2;int i,j;
while(~scanf("%s %s %d",a,b,&k))
{
if(a[0]=='0'&&b[0]=='0')//TMD,字符0,否则停止
break;
len1=strlen(a);
len2=strlen(b);
c=(char *)malloc(len1);
d=(char *)malloc(len2);
memcpy(c,a,len1);
memcpy(d,b,len2);
len=min(len1,len2);
sscanf(c,"%d",num1);
sscanf(d,"%d",num2);
if(k>len)
printf("%d\n",num1+num2);
else
for(i=len1-1;i>=len1-k;i--)
//差点搞错,应该是i=k-1;再自减,一调试,发现停止工作,引用了未初始化内存,自认为是sscanf
,
//原来错啦,应该是if(a[0]==0&&b[0]==0)有问题,0应该是字符0
//应该先用memcpy把初始化的内存复制一下,还要动态内存分配
//况且,逻辑有问题,每个字符数组的最后开始
for(j=len2-1;j>=len2-k;j--)
if(a[i]!=b[i])
printf("%d\n",num1+num2);
if(i=k)
printf("-1\n");
}
return 0;
}
//刚知道sscanf也有memcpy的功能,sscanf(a,"5s",b),复制前五个字节到b
#include<stdio.h>
#include<string.h>
#include<malloc.h>
//#define min(a,b) a<b?a:b
int min(int a,int b)
{
return a<b?a:b;
}//换成函数后还是停止,看来不是define问题
int main()
{
char a[6],b[6];
int k;int len1,len2,len;int num1,num2;int i,j;
while(~scanf("%s %s %d",a,b,&k))
{
if(a[0]=='0'&&b[0]=='0')//TMD,字符0,否则停止
break;
len1=strlen(a);
len2=strlen(b);
//c=(char *)malloc(len1);
//d=(char *)malloc(len2);
// memcpy(c,a,len1);
// memcpy(d,b,len2);
len=min(len1,len2);
sscanf(a,"%d",num1);
sscanf(b,"%d",num2);
if(k>len)
printf("%d\n",num1+num2);
else
for(i=len1-1,j=len2-1;(i>=len1-k)&&(j>=len2-k);i--,j--)
//差点搞错,应该是i=k-1;再自减,一调试,发现停止工作,引用了未初始化内存,自认为是sscanf
,
//原来错啦,应该是if(a[0]==0&&b[0]==0)有问题,0应该是字符0
//应该先用memcpy把初始化的内存复制一下,还要动态内存分配
//况且,逻辑有问题,每个字符数组的最后开始,应该写在一个for循环内
if(a[i]!=b[j])
printf("%d\n",num1+num2);
if(i=k)
printf("-1\n");
}
return 0;
}
//刚知道sscanf也有memcpy的功能,sscanf(a,"5s",b),复制前五个字节到b