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;
    }
  • 相关阅读:
    循序渐进Linux 1:Linux的基本结构
    Django通过中间件实现登录验证demo
    Django中简单添加HTML、css、js等文件(非正规添加,适合小白)
    数据库之MySQL
    前端之JQuery
    核心编程之第一章正则表达式
    前端之JS
    python基础面试常见题
    前端之CSS
    前端之HTML
  • 原文地址:https://www.cnblogs.com/ruoh3kou/p/10279892.html
Copyright © 2011-2022 走看看