大整数减法


题目

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

输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的差。

数据范围
1≤整数长度≤105

输入样例:
32
11
输出样例:
21

代码

#include<iostream>
#include<cstring>
using namespace std;
int sc[123450];int sa[123456];int sb[123456];
int main()
{
    string a,b;int k=0;int flag=0;
    cin>>a>>b;
    int lena=a.length();int lenb=b.length();
    for(int i=0;i<lena;i++) sa[i]=a[lena-i-1]-'0';
    for(int i=0;i<lenb;i++) sb[i]=b[lenb-i-1]-'0';
    if(lena<lenb||(lena==lenb&&a<b))
    {
        flag=-1;
        swap(lena,lenb);
        swap(sa,sb);
    }
    int l=0;
    while(l<lena||l<lenb)
    {
        if((sa[l]-sb[l])<0)
        {
            sa[l+1]--;
            sa[l]+=10;
        }
        sc[k++]=sa[l]-sb[l];
        l++;
    }
    while(sc[l]==0&&l>0)l--;
    if(flag==-1) cout<<"-";
    for(int i=l;i>=0;i--) cout<<sc[i];
    return 0;
}

Author: 眼里有星星
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source 眼里有星星 !
 Previous
第K个数 第K个数
题目给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列的第k小的数是多少。 输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在1~109范围内),表示整数数列。 输出格式输出一个整数,表示数列的第
2020-02-22
Next 
大整数乘法 大整数乘法
题目给定两个正整数A和B,请你计算A * B的值。输入格式 共两行,第一行包含整数A,第二行包含整数B。输出格式 共一行,包含A * B的值。数据范围 1≤A的长度≤100000,1≤B≤10000 输入样例: 23 输出样例: 6 代码#
2020-02-22
  TOC