Решение задачи A-B с Acmp

Без пояснения   Просмотров: 91


Требуется найти разность между неотрицательными числами А и В.

Код

#include <bits/stdc++.h>
 
using namespace std;
 
string sumStr(string a, string b)
{
    string r = "";
    string conv = "";
    int temp = 0,t = 0;
    for(int i = a.size() - 1; i >= 0; --i){
       if(a[i] < b[i]){
        t = a[i] + 10 - b[i];
            if(a[i - 1] == 0)
                a[i - 1] = '9';
            else
                a[i - 1]--;
        if(t==0){
            conv = 48;
            r.insert(0,conv);
        }
        else{
        conv = t + 48;
        r.insert(0,conv);
            }
       }
       if(a[i] >= b[i]){
        t = a[i] - b[i];
         if(t==0){
            conv = 48;
            r.insert(0,conv);
        }
        else{
            conv = t + 48;
            r.insert(0,conv);
            }
 
       }
    }
    return r;
}
string multStr(string a,string b)
{
    bool bb = false,cc = false;
    if(a.size() > b.size()){
        b.insert(0,a.size() - b.size(),'0');
        return sumStr(a, b);
 
    }
    if(a.size() < b.size()){
        a.insert(0,b.size() - a.size(),'0');
        return sumStr(b, a);
 
    }
    if(a.size() == b.size()){
        for(int i = 0; i < a.size(); ++i){
            if(a[i] > b[i]){
                bb = true;
                break;
            }
            if(a[i] < b[i]){
                cc = true;
                break;
            }
        }
    if(bb==true)
        return sumStr(a,b);
    if(cc==true)
        return sumStr(b,a);
    }
}
int main()
{
    string str,a,b;
    cin >> a >> b;
 
    bool bb = false;
    if(a.size() < b.size())
        bb = true;
 
    if(a.size() == b.size()){
        bool ss = false;
        for(int i = 0; i < a.size(); ++i){
              if(a[i] > b[i]){
                    ss = true;
                    break;
              }
              if(a[i] < b[i]){
                ss = true;
                bb = true;
                break;
              }
        }
        if(ss==false){
        cout << 0;
        return 0;
    }
    }
    str = multStr (a,b);
    int t = 0;
    bool cc = true;
    while(str[t]=='0'){
        if(str[0]=='0'){
            str.erase(0,1);
            t--;
            cc = false;
        }
        t++;
    }
 
    if(bb == true)
        cout <<"-";
 
    cout << str;
    return 0;
}

         

Администратор Photo Автор: Администратор




Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться