问题描述
找出字符串A中和DA相同的数字,并将它们组成一个大数。再找出字符串B中和DB相同的数字,再将他们组成一个大数。将两个大数相加即可得到答案。
题目分析
我们输入字符串A,数值DA,字符串B,数值DB,然后从末尾向前遍历字符串A,因为从末尾遍历的话先找到的将作为大数的低位,我们应该从低位往高位加。所以如果字符串A中某个字符-'0’与DA相等(将数字字符转换为纯数字),我们就将其乘以对应10的n次幂,这个n取决于现在是A中从后往前第几个相同的数。同理对B也一样处理
代码
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
string A,B;
int Da,Db;
cin>>A>>Da>>B>>Db;
int sumA = 0,sumB = 0,countA = 0,countB = 0;
for(int i = A.length() - 1;i >= 0;i--)
{
if(A[i] - '0' == Da)
{
sumA+=pow(10,countA) * Da;
countA++;//countA表示10的幂次方
}
}
for(int i = B.length() - 1;i >= 0;i--)
{
if(B[i] - '0' == Db)
{
sumB+=pow(10,countB) * (B[i] - '0');
countB++;//countB表示10的幂次方
}
}
cout<<sumA + sumB;
return 0;
}
总结
答题用时7min
Q16——finish√