正整数 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<109。
输出格式:
在一行中输出 PA+PB 的值。
输入样例 1:
3862767 6 13530293 3
输出样例 1:
399
输入样例 2:
3862767 1 13530293 8
输出样例 2:
0
代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
// 函数 jisuan: 计算字符串 N 中字符 n 的出现次数,并生成一个对应的数字串
/*注:
jisuan 函数的目的是返回一个字符串,这个字符串由输入字符串 N 中所有等于给定字符 n 的字符组成
如果将 jisuan 函数定义为 void 类型,意味着这个函数不会返回任何值,这样在调用该函数后就无法得到所需的字符串结果。
但是如果将 jisuan 函数改为 void,我们可以通过引用参数来修改外部变量以获取结果
*/
//void jisuan(const string& N, char n, string& P)
string jisuan(string N,char n)
// char n 表示我们要查找的特定字符,只能使用char定义
{
string P=""; // 初始化空字符串 P
for(size_t i=0;i<N.length();i++)
// size_t 是一种无符号整数类型,通常用于表示尺寸或索引。
{
if(N[i]==n) // 访问字符串 N的第 i 个字符,判断是否为n
P+=n;
}
return P;
}
int main()
{
string A,B;
char a,b;
cin>>A>>a;
cin>>B>>b;
// 如果是用void jisuan
/*
string Pa, Pb;
jisuan(A, a, Pa);
jisuan(B, b, Pb);
*/
string Pa=jisuan(A,a);
string Pb=jisuan(B,b);
// 将字符串 Pa 转换为整数。如果 Pa 为空,则结果为 0
int numPa=Pa.empty()?0:stoi(Pa);
int numPb=Pb.empty()?0:stoi(Pb);
int sum;
sum=numPa+numPb;
cout<<sum;
return 0;
}