zoukankan      html  css  js  c++  java
  • [小米OJ] 3. 大数相减

    题目链接

    思路:

    利用两个string保存相减的数,其他模拟即可。

    参考了别人的一个处理减的步骤,很简洁好看。

    string substract(string str1, string str2)
    {
        string str = "";
        int len = str1.length();
        int a = 0, b = 0, c = 0;
        for (int i = len - 1; i >= 0; i--)
        {
            a = str1[i] - '0';
            b = str2[i] - '0';
            str += ((a - b - c + 10) % 10) + '0';
            if (a - b - c >= 0)
                c = 0;
            else
                c = 1;
        }
        reverse(str.begin(), str.end());
        return str;
    }

    完整代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    void init1(string input, string &str1, string &str2)
    {
        int index = input.find('-');
        for (int i = 0; i < input.length(); i++)
        {
            if (i < index)
                str1 += input[i];
            else if (i > index)
                str2 += input[i];
        }
    }
    
    void init2(string str1, string &str2)
    {
        while (str2.length() < str1.length())
        {
            str2 = '0' + str2;
        }
    }
    
    string substract(string str1, string str2)
    {
        string str = "";
        int len = str1.length();
        int a = 0, b = 0, c = 0;
        for (int i = len - 1; i >= 0; i--)
        {
            a = str1[i] - '0';
            b = str2[i] - '0';
            str += ((a - b - c + 10) % 10) + '0';
            if (a - b - c >= 0)
                c = 0;
            else
                c = 1;
        }
        reverse(str.begin(), str.end());
        return str;
    }
    
    void print(string str)
    {
        while (str[0] == '0')
        {
            str.erase(str.begin());
        }
        if (str.length() == 0)
            str = "0";
        cout << str << endl;
    }
    
    int main()
    {
        string input, str, str1, str2;
        while (cin >> input)
        {
            init1(input, str1, str2);
            init2(str1, str2);
            str = substract(str1, str2);
            print(str);
        }
        return 0;
    }
  • 相关阅读:
    如何基于Azure平台实现MySQL HA(方法论篇)
    如何对Azure磁盘性能进行测试
    Azure底层架构的初步分析
    聊聊Azure的安全性
    关于Azure带宽的测试
    JavaScript 优化
    SQL时间段查询
    win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
    putty 使用方法,中文教程
    怎样才能专心工作
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/10279892.html
Copyright © 2011-2022 走看看