zoukankan      html  css  js  c++  java
  • 高精度算法_大数相减

    给定两个正整数,计算它们的差,计算结果可能为负数。

    输入格式

    共两行,每行包含一个整数。

    输出格式

    共一行,包含所求的差。

    数据范围

    11051≤整数长度≤105

    输入样例:

    32
    11
    

    输出样例:

    21
     
    #include <iostream>
    #include <vector>//
     
    using namespace std;//
     
    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;
    }
     
    vector<int> sub(vector<int>&A,vector<int>&B)
    {
      vector<int> C;
     
      int t=0;
      for(int i =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;
    }
     
      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');//到vector
     
      if(cmp(A,B))//
      {
      auto C=sub(A,B);//C++
     
      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;
    }
     
     
     
     
  • 相关阅读:
    soundtouch 变速算法matlab实现
    resample matlab实现
    hrtf virtual surround matlab实现
    hrtf 旋转音效matlab实现
    audio mixer
    schroeder reverb matlab实现
    HTML DOCTYPE文档类型举例说明
    window 连接双网
    linux 命令
    sqlserver 时间戳
  • 原文地址:https://www.cnblogs.com/WAsbry/p/13585007.html
Copyright © 2011-2022 走看看