乙级|1016.部分A+B

题目描述

正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​。例如:给定 A=3862767,D​A​​=6,则 A 的“6 部分”P​A​​ 是 66,因为 A 中有 2 个 6。
现给定 A、D​A​​、B、D​B​​,请编写程序计算 P​A​​+P​B​​。

输入描述

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

输出描述

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

输入例子

3862767 6 13530293 3

输出例子

399

我的代码

#include
#include
#define N 15
int main(){
    char a[N],b[N];   //使用字符串来存储输入
    char d1,d2;   //存储DA,DB
    int i,j=0,k=0,sum1=0,sum2=0;
    scanf("%s %c %s %c",a,&d1,b,&d2);
    for(i=0;i0;i--){
        sum1=sum1+(d1-48)*pow(10,i-1);   //按照规律求和
    }
    for(i=k;i>0;i--){
        sum2=sum2+(d2-48)*pow(10,i-1);
    }   
    printf("%d",sum1+sum2);
    return 0;
} 

我的分析

这道题我是一次就过,应该是比较简单的。首先我是创建了a[N],b[N]两个字符串,因为在后面进行查找的时候字符串比数组要好用许多,然后d1,d2也是以字符的形式进行输入,同样是为了方便查找。接着就是用循环来进行查找,并用j,k来计数,然后是进行求和,开在求和的时候遇到了一点小麻烦,因为d1,d2是字符,不能直接进行乘法运算,所以我采用的是用ASCⅡ码来换算(其实记住一些特殊字符的ACSⅡ码对于解题是很有帮助的例如A-65,a-97,0-48)这里是是直接将d1,d2减去48即可。

你可能感兴趣的:(乙级|1016.部分A+B)