整数高精度减法
本文最后更新于-1天前,其中的信息可能已经过时,如有错误请发送邮件到2392862431@qq.com

基本思想:

把除数与被除数存储在两个数组或是容器内,在进行减法前进行大小判断,如果A>B,直接进行减法,反之交换A,B,在最后输出结果前加上减号即可,最后进行加减法的运算,最后输出结果。

实现过程:

1、对除数与被除数以及结果进行预处理(也就是存入容器内),输出读入等模板框架。

2、用一个bool型的判断A是否大于B的函数进行判断,结果为真则调用A-B,反之B-A(但最后的结果要加负号)。

3、实现减法函数。

代码实现:

1、框架处理:

string a,b;
cin>>a>>b;
vector<int> A,B,C;
for(int i=a.size()-1;i>=0;i--)
{
   A.push_back(a[i]-'0');   //易错点:记住要把字符xii'n
}
for(int i=b.size();i>=0;i--)
{
   B.push_back(b[i]-'0');
}
if(cmp(A,B))
   C=sub(A,B);
else
{
   C=sub(B,A);
   cout<<'-';
}
for(int i=C.size();i>=0;i--)
   cout<<C[i];
cout<<endl;
return 0;

2、判断A是否大于B

bool cmp(vector<int>&A,vector<int>&B)
{
    if(A.size()!=B.size())
    return A.size()>B.size();
    for(int i=A.size()-1;i>=0;i--)
    {
          if(A[i]!=B[i])
          return A[i]>B[i];
    }
    return true;
}

3、减法函数的实现

vector <int>sub(vector<int>&A,vector<int>&B)
{
   vector<int>C;
   for(int i=0,t=0;i<A.size();i++)
  {
       t=A[i]-t;
       if(i<B.size())
       t=t-B[i];
       C.push_back((t+10)%10);
       if(t<0)
           t=1;
       else
           t=0;
  }
   while(C.size()>1&&C.back()==0)    //前导零的去除
       C.pop_back();
   return
   
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇