小米OJ-19-大數(shù)的加法運(yùn)算與大小判斷

描述

對(duì)于給定的算術(shù)表達(dá)式,按規(guī)則輸出計(jì)算結(jié)果,僅包含加法和大小判斷。

輸入

一行字符串,為加號(hào)、大于、小于( + < > ) 連接的兩個(gè)不限大小的非負(fù)整數(shù)。

輸出

當(dāng)符號(hào)為 + 時(shí), 計(jì)算兩個(gè)數(shù)相加的和, 并以字符串格式返回; 當(dāng)符號(hào)為 < 時(shí), 如果左數(shù)小于右數(shù), 返回大寫字母字符 Y, 否則返回大寫字母字符 N; 當(dāng)符號(hào)為 > 時(shí), 如果左數(shù)大于右數(shù), 返回大寫字母字符 Y, 否則返回大寫字母字符 N。

!!!請(qǐng)同學(xué)們盡量使用算法來(lái)解決這個(gè)問(wèn)題

輸入樣例

972919822976663297>74058
875098336507333719633571722631534917759993913379786689>53558270653237768027942884431075534537929401567824882097903948774409200
7625022925148127196027859399571498914361+790786706794530

輸出樣例

Y
N
7625022925148127196027860190358205708891


解析:這一題與第三題“大數(shù)相減”相似,多了大小的判斷。核心都是模擬人工加減法來(lái)對(duì)存儲(chǔ)在字符串中的數(shù)字進(jìn)行運(yùn)算。


而我的算法性能不是很理想原因可能是過(guò)多的封裝和需要在長(zhǎng)度較小的數(shù)前面補(bǔ)充“0”,而字符串在前面增加元素的代價(jià)很大。

#include<bits/stdc++.h>
using namespace std;

class fun
{
    public:
        void split(const string s);
        void addition(string astr , string bstr);
        void greater_than(string astr , string bstr);
        void less_than(string astr , string bstr);
    private:
        //保存結(jié)果
        string cstr;
}temp;

void fun::addition(string astr , string bstr)
{
    //進(jìn)位
    int overflow = 0;
    //使兩個(gè)字符串位數(shù)對(duì)齊
    while (astr.size()<bstr.size())
    {
        astr.insert(0,"0");
    }
    while (bstr.size()<astr.size())
    {
        bstr.insert(0,"0");
    }
    for(int i = (astr.size() - 1) ; i>=0 ; i--)
    {
        if(astr[i] + bstr[i] + overflow - '0' - '0' >= 10)
        {
            cstr += astr[i] + bstr[i] + overflow - 10 - '0';
            overflow = 1;
        }
        else
        {
            cstr += astr[i] + bstr[i] + overflow - '0';
            overflow = 0;
        }
    }

    //先看是否有溢出位需要輸出,再倒序輸出
    if(overflow == 1)
    {
        cout<<"1";
    }
    for(int i = 0; i < cstr.size(); i++){
        cout<<cstr[cstr.size()-1-i];
    }
    cout<<endl;
    cstr.clear();
}
void fun::greater_than(string astr , string bstr)
{
    //使兩個(gè)字符串位數(shù)對(duì)齊
    while (astr.size()<bstr.size())
    {
        astr.insert(0,"0");
    }
    while (bstr.size()<astr.size())
    {
        bstr.insert(0,"0");
    }
    if(astr > bstr)
    {
        cout<<"Y"<<endl;
    }
    else
    {
        cout<<"N"<<endl;
    }
}
void fun::less_than(string astr , string bstr)
{
    //使兩個(gè)字符串位數(shù)對(duì)齊
    while (astr.size()<bstr.size())
    {
        astr.insert(0,"0");
    }
    while (bstr.size()<astr.size())
    {
        bstr.insert(0,"0");
    }
    if(astr < bstr)
    {
        cout<<"Y"<<endl;
    }
    else
    {
        cout<<"N"<<endl;
    }
}

void fun::split(const string s)
{
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] < '0' || s[i] > '9')
        {
            string astr(s,0,i);
            string bstr(s,i+1);
            if(s[i] == '+')
            {
                fun::addition(astr,bstr);
            }
            else if(s[i] == '>')
            {
                fun::greater_than(astr,bstr);
            }
            else if(s[i] == '<')
            {
                fun::less_than(astr,bstr);
            }
            break;
        }
    }
}

int main()
{
    string input;
    while(getline(cin,input))
    {
        temp.split(input);
    }
    return 0;
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,716評(píng)論 0 5
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評(píng)論 0 4
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,338評(píng)論 0 10
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,044評(píng)論 0 2
  • ??引用類型的值(對(duì)象)是引用類型的一個(gè)實(shí)例。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,219評(píng)論 0 1

友情鏈接更多精彩內(nèi)容