题目描述
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
输入描述
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0<A,B<1010。
输出描述
在一行中输出 PA+PB 的值。
输入例子
3862767 6 13530293 3
输出例子
399
我的代码
#include<stdio.h>
#include<math.h>
#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;i<N;i++){
if(a[i]==d1){
j++; //记住DA出现的次数
}
}
for(i=0;i<N;i++){
if(b[i]==d2){
k++; //记住DB出现的次数
}
}
for(i=j;i>0;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即可。
网友评论