题目

正整数 $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 < A, B < 10^{9}$ 。

输出格式:

在一行中输出 $P_A + P_B$ 的值。

输入样例 1:

1
3862767 6 13530293 3

输出样例 1:

1
399

输入样例 2:

1
3862767 1 13530293 8

输出样例 2:

1
0

鸣谢用户 George Hu 修正数据范围!

思路

$2^{31} \lt 2\times 10^{10}$,因此要用long int

代码

Github最新代码,欢迎交流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

long Dpart(long A, int D_A)
{
	long P_A;
	for (P_A = 0; A; A /= 10)
		if (A % 10 == D_A)
			P_A = P_A * 10 + D_A;
	return P_A;
}

int main()
{
	long A, B;
	int D_A, D_B;
	scanf("%ld %d %ld %d", &A, &D_A, &B, &D_B);
	printf("%ld", Dpart(A, D_A) + Dpart(B, D_B));

	return 0;
}