1016 部分A+B (15分)

PAT Based Level

Posted by Kenshin on June 16, 2020
本文字符数:英文459字 | 中文1122字

正整数 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^​10^​​ 。

输出格式:

在一行中输出 P~​A~​​ +P~​B~​​ 的值。

输入样例 1:

** 3862767 6 13530293 3**

输出样例 1:

** 399**

输入样例 2:

** 3862767 1 13530293 8**

输出样例 2:

** 0**

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main() {
    string a;
    char d;
    int sum = 0;
    while (cin >> a >> d) {
        int tmp = 0;
        for (char i : a)
            if (i == d)
            tmp = tmp * 10 + (d - '0');
        sum += tmp;
    }
    cout << sum;
    return 0;
}

柳神

在简洁的不归路上越走越远

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