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;
    }
     
     
     
     
  • 相关阅读:
    数组的应用:一。冒泡排序二。折半查找!二维数组的学习。
    break与continue,while 循环和一维数组的学习及作业
    for循环的应用:迭代法和穷举法
    循环
    称体重
    js js弹出框、对话框、提示框、弹窗总结
    windows 服务器开设端口
    SQL Server 数据库分离与附加(图文教程)
    ASP.NET MVC5 PagedList分页示例
    mvc 连接数据库但单复值得问题
  • 原文地址:https://www.cnblogs.com/WAsbry/p/13585007.html
Copyright © 2011-2022 走看看