题解 | #浮点数加法#

浮点数加法

http://www.nowcoder.com/practice/ddec753f446e4ba4944e35378ba635c8

双指针从后往前计算,注意需要记录加数的小数点位置一对齐小数点。



#include<bits/stdc++.h>
using namespace std;
int main(){
    string a, b, res;
    int ap = 0, bp = 0;//分别记录a b小数点的位置
    int i, j;//双指针遍历
    int car = 0;//进位
    while(cin >> a >> b){
        //记录a b小数点的位置
        for(int i = 0; i < a.size(); i++)
            if(a[i] == '.'){
                ap = i;
                break;
            }
        for(int i = 0; i < b.size(); i++)
            if(b[i] == '.'){
                bp = i;
                break;
            }
        //从后往前计算
        i = a.size()-1;
        j = b.size()-1;
        res = "";
        car = 0;
        while(i >= 0 || j >= 0){
            if(i == ap && j == bp){//小数点
                res = '.' + res;
                i--;
                j--;
            }else if(i > ap && i-ap > j-bp){//a小数部分更长
                res = a[i] + res;
                i--;
            }else if(i > ap && i-ap < j-bp){//b小数部分更长
                res = b[j] + res;
                j--;
            }else{//整数部分
                if(i < 0){//a遍历完了 b还没有
                    res = to_string((b[j]-'0' + car) % 10) + res;
                    car = (b[j]-'0' + car) / 10;
                    j--;
                }else if(j < 0){//b遍历完了 a还没有
                    res = to_string((a[i]-'0' + car) % 10) + res;
                    car = (a[i]-'0' + car) / 10;
                    i--;
                }else{//a b都没遍历完
                    res = to_string((a[i]-'0' + b[j]-'0' + car) % 10) + res;
                    car = (a[i]-'0' + b[j]-'0' + car) / 10;//更新进位
                    i--;
                    j--;
                }
            }
        }
        cout << res << endl;
    }
    return 0;
}

全部评论

相关推荐

ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
神哥不得了:神哥来啦~自我评价和校园经历的话可以直接删了,从大厂暑期的话应该没有什么太多问题,应该是能拿到很多大厂面试机会的,就是在面试的时候表示的好一点就行,可以在面试前先把高频top 50的八股多巩固几遍,千万不要看那些假高频八股,这两个项目的话问题不是很大,应该能够帮你找到大厂实习的,算法的话一定要刷起来,因为大厂有些还是比较看重算法的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务