白天的我最菜 2023-07-02 21:10 采纳率: 37.5%
浏览 12

关于#高精度#的问题,如何解决?(语言-c++)

img


高精度减法的这块到底是什么意思吗



#include <iostream>
#include<vector>
using namespace std;
//判断是否有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;
}
  // 请在此输入您的代码
  //C=A-B.地位到高位运算

> **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-=B[i];
      C.push_back((t+10)%10);
      if(t<0)t=1;
      else t=0;
    }__**
    // 123-120=003去0.结果为0的话不能去掉
  while(C.size()>1 && C.back()==0)C.pop_back();
  return C;
  }

  int main(){

    string a,b;
    vector<int>A,B;

    cin>>a>>b;
    for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');
    for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');
  if(cmp(A,B))
  {
    auto C=sub(A,B);
    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);

  }
  else
  {
    auto C=sub(B,A);
    printf("-");
    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
  
  }
  return 0;
}

问题一。
这个sub函数到底是什么意思吗。

问题二.

img

,这个怎么减成318了

问题三。

img


{8, 6,4,2, 0,8, 6, 4, 2]
这也不对呀,二进制??

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-07-02 22:27
    关注

    这就是模拟竖式笔算减法的过程。如果不够减,就加上10再减,也可以说是 % 10 取模,然后 t 就是借位

    评论

报告相同问题?

问题事件

  • 创建了问题 7月2日

悬赏问题

  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?