T1169 大整数减法(#Ⅱ- 1)

14人阅读 评论(0) 收藏 举报
分类:

【题目描述】

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

【输入】

共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;  
}  

查看评论

大整数减法 c++ 代码

  • 2011年07月25日 18:59
  • 1KB
  • 下载

大整数-减法

问题描述 本文主要给出大数减法的一般思路。关于大数的一般性阐述可以参看大整数-加法-demo这篇博客。 思路基本来说,还是大整数的那套思路。 要进行处理的数字,超过了计算机语言所能提供类型的最大...
  • Kang_TJU
  • Kang_TJU
  • 2016-08-16 20:12:50
  • 1659

C/C++程序算法小练习--大整数减法

//大整数减法:#include #include using namespace std; void reverse_str(char *a,int size){ for(int i=0;i...
  • lovemylife1234
  • lovemylife1234
  • 2016-12-06 10:29:40
  • 671

大整数的减法

方法有点LOW: 对于两个不确定长度的数进行减法运算,因为长度有可能超过基本数据类型的表达范围,因此我们最好使用字符串来存储,由于长度可能不一致,例如 123,23这两个数,减法运算从右往左进行,对...
  • xhp1564881
  • xhp1564881
  • 2016-04-06 11:27:51
  • 262

大整数类-实现加减法

上次写了一个“无符号大整数加法”,是比较容易的,这次实现了完整的大整数的加减法,支持有符号的!不过实现起来感觉不是很顺畅,感觉可以优化的地方还很多,先贴一下代码,日后再来优化。另,思路主要是模拟手算的...
  • Jacketinsysu
  • Jacketinsysu
  • 2016-08-03 20:08:12
  • 1110

自己动手写Java大整数《1》表示与加减

上周粗略计划自己写Java下的大整数运算。 后来仔细想想其实自己动手写大整数运算有1好2不好。2个不好分别是: 1,肯定没有Java内置的BigInteger安全快速;2,自己写的大数包只能自己使用,...
  • XUE_HAIyang
  • XUE_HAIyang
  • 2014-07-22 18:51:27
  • 1519

大整数减法的JavaScript实现

这个实现有如下特点:1.它假定输入都是很大的正整数字符串。2.它考虑了字符串以1个或多个"0"开头的情况。3.返回结果也是字符串,可能为正数,负数或0。...
  • esir82
  • esir82
  • 2017-06-20 16:37:48
  • 248

大数操作,用顺序表实现最大一百位数的加减法实现

直接贴代码,看注释: #include #include // 最大一百位数的加减法实现 const int MAXSIZE = 100; typedef struct { int ...
  • HingCheung
  • HingCheung
  • 2017-04-20 00:01:59
  • 307

大数减法 C语言

关于大数减法其核心就是:减法的算法也是从低位开始减,先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;两个位数长度相等时,最好比较哪一个数大,否则负...
  • l_liangkk
  • l_liangkk
  • 2016-07-22 15:57:35
  • 4384

C语言实现大数的减法

关于大数减法其核心就是:减法的算法也是从低位开始减,先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号; 两个位数长度相等时,最好比较哪一个数大,否...
  • dk1543100966
  • dk1543100966
  • 2017-05-28 17:35:19
  • 494
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 4048
    排名: 9907
    文章存档
    最新评论