1016 部分A+B

1016 部分A+B(15 分)

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

参考代码:

#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;
}

猜你喜欢

转载自blog.csdn.net/wss123wsj/article/details/81941889