1016 部分A+B (15分)c++实现

    科技2026-01-10  19

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

    现给定 A、D​A​​、B、D​B​​,请编写程序计算 P​A​​+P​B​​。

    输入格式:

    输入在一行中依次给出 A、D​A、B、D​B​​,中间以空格分隔,其中 0<A,B<10​10​​。

    输出格式:

    在一行中输出 P​A​​+P​B​​ 的值。

    输入样例 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; }

    Processed: 0.009, SQL: 9