題目描述
正整數(shù) A 的“D?A??(為 1 位整數(shù))部分”定義為由 A 中所有 D?A?? 組成的新整數(shù) P?A??。例如:給定 A=3862767,D?A??=6,則 A 的“6 部分”P?A?? 是 66,因?yàn)?A 中有 2 個(gè) 6。
現(xiàn)給定 A、D?A??、B、D?B??,請(qǐng)編寫程序計(jì)算 P?A??+P?B??。
輸入描述
輸入在一行中依次給出 A、D?A??、B、D?B??,中間以空格分隔,其中 0<A,B<10?10??。
輸出描述
在一行中輸出 P?A??+P?B?? 的值。
輸入例子
3862767 6 13530293 3
輸出例子
399
我的代碼
#include<stdio.h>
#include<math.h>
#define N 15
int main(){
char a[N],b[N]; //使用字符串來(lái)存儲(chǔ)輸入
char d1,d2; //存儲(chǔ)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出現(xiàn)的次數(shù)
}
}
for(i=0;i<N;i++){
if(b[i]==d2){
k++; //記住DB出現(xiàn)的次數(shù)
}
}
for(i=j;i>0;i--){
sum1=sum1+(d1-48)*pow(10,i-1); //按照規(guī)律求和
}
for(i=k;i>0;i--){
sum2=sum2+(d2-48)*pow(10,i-1);
}
printf("%d",sum1+sum2);
return 0;
}
我的分析
這道題我是一次就過,應(yīng)該是比較簡(jiǎn)單的。首先我是創(chuàng)建了a[N],b[N]兩個(gè)字符串,因?yàn)樵诤竺孢M(jìn)行查找的時(shí)候字符串比數(shù)組要好用許多,然后d1,d2也是以字符的形式進(jìn)行輸入,同樣是為了方便查找。接著就是用循環(huán)來(lái)進(jìn)行查找,并用j,k來(lái)計(jì)數(shù),然后是進(jìn)行求和,開在求和的時(shí)候遇到了一點(diǎn)小麻煩,因?yàn)閐1,d2是字符,不能直接進(jìn)行乘法運(yùn)算,所以我采用的是用ASCⅡ碼來(lái)?yè)Q算(其實(shí)記住一些特殊字符的ACSⅡ碼對(duì)于解題是很有幫助的例如A-65,a-97,0-48)這里是是直接將d1,d2減去48即可。