正整数 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
思路:
① 因 A 的大小(即长度)不确定,用string
类接收A和B
② 遍历A,记录DA在A中出现的次数count
③ 根据②计算 A 的“DA(为 1 位整数)部分”,储存在sum
中
④ 遍历B,记录DB在B中出现的次数count
⑤ 根据②、③、④计算,将结果也加到sum
中,即为PA + PB
计算时,
用 da -'0'
将char
转化为int
参与计算
用pow(10,count
)表示位数(个、十、百……位)
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main() {
int i = 0, sum = 0, count=0;
char da, db;
string a, b;
cin >> a >> da >> b >> db;
for (i = 0; a[i] != '\0'; i++)
if (a[i] == da)
count++;
for (; count > 0; count--)
sum = sum+(da - '0')*pow(10, count -1);
count = 0;
for (i = 0; b[i] != '\0'; i++)
if (b[i] == db)
count++;
for (; count > 0; count--)
sum = sum + (db - '0') * pow(10, count - 1);
cout << sum;
return 0;
}