输出格式:
在一行中输出 PA+PBP_A + P_BPA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
思路:大数相加,用字符的形式,注意处理特殊数据
#include
#include
int main(){
char A[15],B[15],a,b,Pa[15],Pb[15];
int la,lb,i,j;
scanf("%s %c %s %c",A,&a,B,&b);
la=strlen(A);
lb=strlen(B);
j=0;
memset(Pa,0,sizeof(Pa));
memset(Pb,0,sizeof(Pb));//清空数组
// printf("la=%d lb=%d\n",la,lb);
for(i=0;i if(A[i]==a){
Pa[j]=a;
// printf("j=%d %c\n",j,Pa[j]);
j++;
}
}
// printf("j=%d\n",j);
//printf("Pa=%s\n",Pa);
j=0;
for(i=0;i if(B[i]==b) Pb[j++]=b;
}
// printf("j=%d\n",j);
// printf("Pb=%s\n",Pb);
la=strlen(Pa);
lb=strlen(Pb);
// printf("la=%d lb=%d\n",la,lb);
if(la==lb&& la==0) printf("0\n");//当是没有数据相加的情况
else{
if(la>=lb){
for(i=0;i if(Pa[i]-'0'+Pb[i]-'0'<10){
Pa[i]=Pa[i]-'0'+Pb[i];
}
else{//要向前一位加一
if(Pa[i+1]==0) Pa[i+1]='1';
else Pa[i+1]++;
Pa[i]=Pa[i]-'0'+Pb[i]-10;
}
}
la=strlen(Pa);
j=0;
for(i=la-1;i>=0;i--){
if(Pa[i]!='0') j=1;
if(j==0 && Pa[i]=='0') continue;//因为是倒序输出,要避免数据000 0 11 1 得到011的情况
if(i==0) printf("%c\n",Pa[i]);
else printf("%c",Pa[i]);
}
}
else{
for(i=0;i if(Pa[i]-'0'+Pb[i]-'0'<10){
Pb[i]=Pa[i]-'0'+Pb[i];
}
else{
if(Pb[i+1]==0) Pb[i+1]='1';
else Pb[i+1]++;
Pb[i]=Pa[i]-'0'+Pb[i]-10;
}
}
lb=strlen(Pb);
j=0;
for(i=lb-1;i>=0;i--){
if(Pb[i]!='0') j=1;
if(j==0 && Pb[i]=='0') continue;
if(i==0) printf("%c\n",Pb[i]);
else printf("%c",Pb[i]);
}
}
}
return 0;
}