1016 部分A+B(15 分)
正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
输入格式:
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0<A,B<1010。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
参考代码:
#include<vector>
#include<iostream>
#include<string>
using namespace std;
char change(int x)
{
switch (x)
{
case 0:
return '0';
case 1:
return '1';
case 2:
return '2';
case 3:
return '3';
case 4:
return '4';
case 5:
return '5';
case 6:
return '6';
case 7:
return '7';
case 8:
return '8';
case 9:
return '9';
}
}
int main()
{
string str1, str2;
int p, q;
cin >> str1 >>p >> str2 >> q;
int m, n;
m = str1.size();
n = str2.size();
vector<int>one, two;
for (int i = 0; i < m; i++)
{
if (str1[i] == change(p))
one.push_back(p);
}
for (int i = 0; i < n; i++)
{
if (str2[i] == change(q))
two.push_back(q);
}
int r, t;
r = one.size();
t = two.size();
int re1=0, re2=0;
int k=1;
for (int i = 1; i <= r; i++)
{
re1 = re1 + k*one[0];
k = k * 10;
}
k = 1;
for (int i = 1; i <= t; i++)
{
re2 = re2 + k*two[0];
k = k * 10;
}
int sum=0;
sum = re1 + re2;
cout << sum << endl;
return 0;
}