HD1229

简介: #include #include 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);...
#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

 

 

目录
相关文章
|
7月前
|
芯片 内存技术
NUC980 添加XT25BF256BWSIG spi-nor flash
NUC980 添加XT25BF256BWSIG spi-nor flash
111 2
|
7月前
|
存储 Linux Android开发
Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
429 0
程序人生 - 戴森 Dyson HD01 和 HD03 区别?
程序人生 - 戴森 Dyson HD01 和 HD03 区别?
276 0
程序人生 - 戴森 Dyson HD01 和 HD03 区别?
|
SQL 移动开发 C++
PCIe-SSD卡下的xfs vs ext4对比fileio及TpmC测试
PCIe-SSD卡下的xfs vs ext4对比fileio及TpmC测试
207 0