当前位置:首页 > 题解目录 > 正文内容

【题解】大整数减法

亿万年的星光5年前 (2021-05-02)题解目录16988

【题目描述】

求两个大的正整数相减的差。

【输入】

共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。

【输出】

一行,即所求的差。

【输入样例】

9999999999999999999999999999999999999

9999999999999

【输出样例】

9999999999999999999999990000000000000


【参考答案】

#include<iostream>  
#include<cstring>  
#include<string>  
using namespace std;  
int main()  
{  
    char str1[256],str2[256],temp[256];  
    int a[256],b[256],c[256];  
    int lena,lenb,lenc;  
    int i;  
  
    memset(a,0,sizeof(a));  
    memset(b,0,sizeof(b));  
    memset(c,0,sizeof(c));  
  
    cin>>str1;//输入被减数  
    cin>>str2;//输入减数  
  
    lena=strlen(str1);  
    lenb=strlen(str2);  
    if( (lena<lenb) || (lena==lenb&&strcmp(str1,str2)) )//如果被减数小于减数,值为负,两者交换  
    {  
        strcpy(temp,str1);  
        strcpy(str1,str2);  
        strcpy(str2,temp);  
        cout<<"-";//输出-  
    }  
  
    lena=strlen(str1);  
    lenb=strlen(str2);  
  
    for(i=0;i<=lena-1;i++)//被减数str1存入数组a  
        a[lena-i]=str1[i]-'0';  
    for(i=0;i<=lenb-1;i++)//减数str2存入数组b  
        b[lenb-i]=str2[i]-'0';  
  
    i=1;  
    while(i<=lena||i<=lenb)  
    {  
        if(a[i]<b[i])  
        {  
            a[i]+=10;//借位  
            a[i+1]--;//上一位减1  
        }  
        c[i]=a[i]-b[i];//对应位相减  
        i++;  
    }  
    lenc=i;  
    while((c[lenc]==0)&&(lenc>1))//删除前导0  
        lenc--;  
  
    for(i=lenc;i>=1;i--)//倒序输出  
        cout<<c[i];  
    cout<<endl;  
    return 0;  
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】剔除相关数

【题目描述】一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。【输入描述】每组数据前有一个N(<10...

【题解】小x与队列

【题目描述】小X正和同学们做列队的练习。有n名同学排成一路纵队,编号为i的同学排在从前往后数第i个位置上,即:初始时的队列为1, 2, 3, ..., n。接下来小X会发出若干条指令,每条指令形如“请...

【题解】游戏

【题目描述】上了半天的物理数学课,大家的脑子有点转不动了,下午的课表似乎看透了同学们的 心思,第一节就安排了体育课,CZ 中学的课表真是太有爱了,赞一个!午间休息后,文体 委员小 S 喊大家到教室外的...

【题解】转换字符串的最少操作次数

【题目描述】给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' ...

【题解】夹角

【题目描述】这次童鞋们面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。注:夹角的范围[0,180],两个点不会在圆心出现。【输入描述】输入数据的第一行是一个数据T,表示...

【题解】均分蛋糕

【题目描述】小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为a1, a2, …, an。小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个...