PAT (Basic Level)1016 部分A+B

正整数 AAA 的“DAD_AD​A​​(为 1 位整数)部分”定义为由 AAA 中所有 DAD_AD​A​​ 组成的新整数 PAP_AP​A​​。例如:给定 A=3862767A = 3862767A=3862767,DA=6D_A = 6D​A​​=6,则 AAA 的“6 部分”PAP_AP​A​​ 是 66,因为 AAA 中有 2 个 6。

现给定 AAA、DAD_AD​A​​、BBB、DBD_BD​B​​,请编写程序计算 PA+PBP_A + P_BP​A​​+P​B​​。

输入格式:

输入在一行中依次给出 AAA、DAD_AD​A​​、BBB、DBD_BD​B​​,中间以空格分隔,其中 0

输出格式:

在一行中输出 PA+PBP_A + P_BP​A​​+P​B​​ 的值。

输入样例 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;
}
 

 

你可能感兴趣的:(PAR-BL)