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()))
  • 相关阅读:
    Java中的魔法类-Unsafe
    Caffeine Cache-高性能Java本地缓存组件
    mysql之innodb日志管理
    mysql之innodb存储引擎---BTREE索引实现
    myslq5.7安装以及root密码找回
    mysql之innodb存储引擎---数据存储结构
    mysql之innodb存储引擎介绍
    java字符串详解
    hadoop2.7作业提交详解之文件分片
    hadoop2.7之作业提交详解(下)
  • 原文地址:https://www.cnblogs.com/zhoubo123/p/11369012.html
Copyright © 2011-2022 走看看