PAT乙级-1016 部分A+B
馨er BOSS

模拟

题目

正整数 $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

题解

我的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, d, t;
int x = 0, y = 0;
cin >> a >> b >> c >> d;
while (a) {
t = a % 10;
a /= 10;
if (t == b) {
x = x * 10 + b;
}
}
while (c) {
t = c % 10;
c /= 10;
if (t == d) {
y = y * 10 + d;
}
}
cout << x + y << endl;
return 0;
}

柳神的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main() {
string a, b;
int da, db, cnta = 0, cntb = 0, pa = 0, pb = 0;
cin >> a >> da >> b >> db;
for (int i = 0; i < a.length(); i++)
if (da == (a[i] - '0')) cnta++;
for (int i = 0; i < b.length(); i++)
if (db == (b[i] - '0')) cntb++;
if (cnta != 0) pa = da;
if (cntb != 0) pb = db;
for (int i = 1; i < cnta; i++)
pa = 10 * pa + da;
for (int i = 1; i < cntb; i++)
pb = 10 * pb + db;
cout << pa + pb;
return 0;
}

题目链接

  • 本文标题:PAT乙级-1016 部分A+B
  • 本文作者:馨er
  • 创建时间:2021-05-11 17:00:13
  • 本文链接:https://sjxbbd.vercel.app/2021/05/11/de45a3439b07/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!