【PAT B-1016】部分 A+B
题意概述
正整数 A 的 D A D_A DA部分定义为由 A 中的所有 D A D_A DA组成的新整数 P A P_A PA。例如:给定 A=3862767, D A = 6 D_A=6 DA=6,则 A 的“6 部分” P A = 66 P_A=66 PA=66,因为 A 中有 2 个 6。给定 A、 D A D_A DA、B、 D B D_B DB,计算 P A + P B P_A+P_B PA+PB。
输入输出格式
输入第一行给出 A、 D A D_A DA、B、 D B D_B DB。
在一行中输出 P A + P B P_A+P_B PA+PB。
数据规模
0 < A , B < 10 10 0<A,B<{10}^{10} 0<A,B<1010
算法设计
直接用 string 读入 A 和 B,遍历 A 和 B 将对应的 D A D_A DA、 D B D_B DB截取下来组成两个整数 a、b,输出 a+b 即可。
C++代码
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
string A, B;
gg Da, Db, a = 0, b = 0;
cin >> A >> Da >> B >> Db;
for (auto c : A) {
if (c - '0' == Da) {
a = a * 10 + Da;
}
}
for (auto c : B) {
if (c - '0' == Db) {
b = b * 10 + Db;
}
}
cout << a + b;
return 0;
}