zoukankan      html  css  js  c++  java
  • 大整数减法(高精度减法)

    高精度减法跟高精度加法一样,都是超过了(long long)的范围,也要转化为字符串来处理:

    题目链接:https://www.luogu.org/problem/P2142

    高精度减法

    输入格式

    两个整数a,b(第二个可能比第一个大)

    输出格式

    结果(是负数要输出负号)

    输入输出样例

    输入 #1
    2
    1
    输出 #1
    1

    说明/提示

    20%数据a,b在long long范围内

    100%数据0 < a,b leq 10^{10086}0<a,b1010086

    C++代码:

    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
            string a;
            string b;
            cin>>a;
            cin>>b;
            bool flag=false;//用来判断是否交换了a和b的值 
            if(a==b) cout<<"0";//特判a和b相等 
           int A[100000]={0},B[100000]={0},C[100000]={0}; //A用来存a中的每一个数 。。。。C用来存a和b的每一位数相减的结果 
           int alen=a.length();
           int blen=b.length();
           if(alen<blen) 
           {
                swap(a,b);//如果b的长度大于a的长度,交换a,b的值 
                flag=true;
           }
           else if(alen==blen)
           {
                 if(b>a)//如果a和b的长度相等,但b比a大,交换a,b的值; 
                 {
                  swap(a,b);
                     flag=true;
                 }
           }
            alen=a.length();
            blen=b.length();
           for(int i=0;i<=alen;i++)//逆序存入a 
               A[alen-i]=a[i]-'0';
           for(int j=0;j<=blen;j++)//逆序存入b 
               B[blen-j]=b[j]-'0';
            int clen=1;//记录c的长度 
           while(clen<=alen)
           {
                 C[clen]=A[clen]-B[clen];//相减 
                 if(C[clen]<0) //考虑相减之后小于0; 
                 {
                      while(C[clen]<0)
                      {
                       C[clen]+=10;//向上一位借位直到大于0 
                            A[clen+1]--; 
                          }
                 }
               clen++;
           }
           while(C[clen]==0)//找到前缀为0的位置 
             clen--;
            if(flag==true) cout<<"-";//判断a和b是否交换过位置;交换过就先输出一个负号 
            for(int t=clen;t>0;t--)
               cout<<C[t];
        return 0;
    }

    Python代码:

    print(int(input())-int(input()))
  • 相关阅读:
    Google Authentication 机制原理
    ldap日志
    ldap + kerberos 整合
    kerberos
    U盘格式化后的恢复
    初始化脚本(Os_Init_Optimization.sh)
    拿到新机器,进行初始化和部署Nginx的过程
    python 列表生成式
    python 装饰器
    简单总结无线CPE、无线AP、无线网桥的不同之处【转】
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11369012.html
Copyright © 2011-2022 走看看