PTA刷题Basic篇——1016.部分A+B——Day(8)

问题描述

在这里插入图片描述
找出字符串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√

发布了60 篇原创文章 · 获赞 2 · 访问量 1062

猜你喜欢

转载自blog.csdn.net/weixin_44755413/article/details/105525765