正整数
A
A
A的“
D
A
D_A
DA(为1位整数)部分”定义为由
A
A
A中所有
D
A
D_A
DA组成的新整数
P
A
P_A
PA。例如:给定
A
=
3862767
A=3862767
A=3862767,
D
A
=
6
D_A=6
DA=6,则
A
A
A的“6部分”
P
A
P_A
PA是66,因为
A
A
A中有2个6。现给定
A
A
A、
D
A
D_A
DA、
B
B
B、
D
B
D_B
DB,请编写程序计算
P
A
+
P
B
P_A+P_B
PA+PB。
四【题目示例】
输入格式: 输入在一行中依次给出
A
、
D
A
、
B
、
D
B
A、D_A 、B、D_B
A、DA、B、DB,中间以空格分隔,其中
0
<
A
,
B
<
1
0
9
0<A,B<10^9
0<A,B<109。
输出格式: 在一行中输出
P
A
+
P
B
P_A+P_B
PA+PB的值。
输入样例 1: 3862767 6 13530293 3
输出样例 1: 399
输入样例 2: 3862767 1 13530293 8
输出样例 2: 0
五【解题思路】
初读题目可能不知道什么意思,简单“翻译”一下就是:给一个数A,在这个数字里面枚举
D
A
D_A
DA这个数字,将所有枚举的给定数字
D
A
D_A
DA逐位拼接起来,组成新的
P
A
P_A
PA,B也同理得到
P
B
P_B
PB,最后返回
P
A
+
P
B
P_A+P_B
PA+PB的值,思路步骤如下 ①:首先通过A%10可以得到A的末位数字,每次
P
A
∗
10
P_A*10
PA∗10再加上得到的末位数字就拼接起来了 ②:然后将A/10可以去掉最低位 ③:循环上述步骤直至A为0即可得到
P
A
P_A
PA,B可同理得到
P
B
P_B
PB ④:注意A和B的范围,需要使用
l
o
n
g
l
o
n
g
long \quad long
longlong类型
六【最终得分】
15分
七【代码实现】
#include<stdio.h>intmain(){longlong A,Da,B,Db;scanf("%lld%lld%lld%lld",&A,&Da,&B,&Db);longlong Pa =0,Pb =0;while(A !=0){if((A %10)== Da){
Pa = Pa *10+(A %10);}
A = A /10;}while(B !=0){if((B %10)== Db){
Pb = Pb *10+(B %10);}
B = B /10;}printf("%lld",Pa+Pb);return0;}