一、题目
正整数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的值。
输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0
二、个人理解
此题主要考察数学计算。主要算法为:不停地进行取余和除10,并同时进行比较,以取出数,还需进行位制的转换。
#include <stdio.h>
int main()
{
int a1, a2, b1, b2;
int count1 = 1, a3 = 0, temp;
scanf("%d%d%d%d", &a1, &a2, &b1, &b2);
//计算PA
while (a1 > 0) {
temp = a1 % 10;
a1 = a1 / 10;
if (temp == a2) {
a3 = temp * count1 + a3;
count1 *= 10; //引入计数,来进行位制的变换
}
}
int count2 = 1, b3 = 0;
//计算PB
while (b1 > 0) {
temp = b1 % 10;
b1 = b1 / 10;
if (temp == b2) {
b3 = temp * count2 + b3;
count2 *= 10;
}
}
printf("%d", a3 + b3);
}