加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[小米OJ] 3. 大数相减

发布时间:2020-12-14 05:14:52 所属栏目:大数据 来源:网络整理
导读:题目链接 思路: 利用两个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

题目链接

思路:

利用两个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,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,str2);
        init2(str1,str2);
        str = substract(str1,str2);
        print(str);
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读