正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 8,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。

现给定 ADABDB,请编写程序计算 PA+PB

输入格式:

输入在一行中依次给出 ADABDB,中间以空格分隔,其中 0。

输出格式:

在一行中输出 PA+PB 的值。

输入样例 1:

3862767 6 13530293 3

输出样例 1:

399

输入样例 2:

3862767 1 13530293 8

输出样例 2:

0
思路:刚好想练练手就用string类的函数了
代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string s1, s2;// 从s1中找a,统计a出现的次数
	string a, b;
	long long sum1, sum2, suma;//怕超出范围,定大一些
	while (cin >> s1 >> a >> s2 >> b)
	{
		int cnt1 = 0, cnt2 = 0;//定义次数变量
		int t1 = 1, t2 = 1;
		sum1 = sum2=suma=0;
		int n1 = s1.size();
		int n2 = s2.size();
		while (s1.find(a) != string::npos)//find(string s)函数输出字串出现的第一个位置,不存在则输出string::npos;
		{
			int k = s1.find(a) + 1;//找到a位置之后的位置
			s1 = s1.substr(k,n1-k);//s1从第K个位置开始的所有元素全部复制到新的s1,其中n1-k表示个数
			cnt1++;
		}
		while (s2.find(b) != string::npos)
		{
			int k = s2.find(b) + 1;
			s2 = s2.substr(k , n2 - k);
			cnt2++;
		}
		if (cnt1 == 0 && cnt2 == 0)
			cout << "0" << endl;
		else
		{
			while (cnt1--)
			{
				sum1 += t1 *(long long) stoi(a);//写一题学一个知识 stoi(string*)函数,函数参数为string类,将串转化成int类的整型数
				t1 *= 10;//如果用atio则要atio(a.c_str());atio(const char*)此为其函数原型
			}//如a=3,cnt=3,所有sum1=3*1+3*10+3*100;
			while (cnt2--)
			{
				sum2 += t2 *(long long) stoi(b);
				t2 *= 10;
			}
			suma = sum1 + sum2;
			cout << suma << endl;
		}
	}
	return 0;
}