正整数 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 的值。
我比较恐惧使用字符串数组来解题,因为对这个类型不够熟悉,但这道题使用整型,我没有找到解决的办法。因此我参考了柳神的代码,换成字符串类型,问题便迎刃而解。
这道题需要注意的点是:在判断整型与字符型变量是否相等时可以使用a = c - '0'这个式子解决。
#include <iostream>
using namespace std;
int main() {
string a,b;
int da,db,pa = 0,pb = 0;
int count1 = 0;
int count2 = 0;
cin >> a >> da >> b >> db;
for(int i = 0; i < a.length(); i++)
if(da == (a[i] - '0')) count1++;
for(int i = 0; i < b.length(); i++)
if(db == (b[i] - '0')) count2++;
if(count1 != 0) pa = da;
if(count2 != 0) pb = db;
for(int i = 1; i < count1; i++)
pa = 10 * pa + da;
for(int i = 1; i < count2; i++)
pb = 10 * pb +db;
cout << pa + pb;
return 0;
}
网友评论