正整数 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
思路:分别找出对应字符串中DA出现的次数,使用pow(10,i)函数完成PA,PB赋值
代码:
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
string A, B;
char DA, DB;
int countA=0, countB=0,PA=0,PB=0;//countA,countB是DA,DB出现的次数
cin >> A >> DA >> B >> DB;
for (int i = 0; i < A.length(); i++)
if (A[i] == DA)
countA++;
for (int i = 0; i < B.length(); i++)
if (B[i] == DB)
countB++;
for (int i = 0; i < countA; i++)
PA +=(DA-'0')*pow(10, i);
for (int i = 0; i < countB; i++)
PB += (DB - '0') * pow(10, i);
cout << PA + PB;
return 0;
}
原本第一次写的,真的lj
#include<iostream>
#include<string>
#include<sstream>
#include<cmath>
using namespace std;
int main()
{
int count1=0, count2=0,temp1=0,temp2=0,numA,numB;
string A, B;
char DA, DB;
cin >> A >> DA >> B >> DB;
for (int i = 0; i < A.length(); i++)
{
if (DA == A[i])
count1++;
}
for (int i = 0; i < B.length(); i++)
{
if (DB == B[i])
count2++;
}
stringstream ss;
ss<<DA;
ss >> numA;
for (int i = 0; i <count1; i++)
{
temp1 += numA * pow(10, i);
}
stringstream ss1;
ss1 << DB;
ss1 >> numB;
for (int i = 0; i < count2; i++)
{
temp2 += numB * pow(10, i);
}
cout << temp1 + temp2;
return 0;
}