正整数 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 的值。
思路:分别找出对应字符串中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; }