6.大数相加优化---

原创 2012年03月30日 16:48:48
#include <cstdlib>
#include <iostream>

using namespace std;

 int result[100];
 int length=0;//构造顺序表 
 
 
void add(char a[],char b[]){
    int i;  
    int j; 
    int m=0;//余数 
    int n=0; //进位数 
    
   
    for(i=strlen(a)-1,j=strlen(b)-1;i>=0 && j>=0;i--,j--){
         m= (((int)a[i]-48)+((int)b[j]+n-48))%10;//余数       
         n=(((int)a[i]-48)+((int)b[j]+n-48))/10;//进位数 
         result[length]=m;
         length++;
         }
    while(i>=0){
          m= ((int)a[i]-48+n)%10;//余数       
         n=((int)a[i]-48+n)/10;//进位数 
         result[length]=m;
         length++;
         i--;
         }
     while(j>=0){
          m= ((int)b[j]-48+n)%10;//余数       
         n=((int)b[j]-48+n)/10;//进位数 
         result[length]=m;
         length++;
         j--;
         }
     if(n!=0){
            result[length]=n;
         length++;   
          }
    } 

int main(int argc, char *argv[])
{
    char a[]="123456789" ;
    char b[]="987654321";
    add(a,b);
    int i;
    for(i=length-1;i>=0;i--) 
    printf("%d",result[i]); 
    // printf("%d",length);  
    system("PAUSE");
    return EXIT_SUCCESS;
}

大数相乘、大数相加、大数相减Java版本

题目:两个非常大的数字相乘(相加,相减)        该题目在java中可以使用BigInteger类中的方法来实现。否则的话可以使用如下方式来实现。        大数相乘:假设有A和B两个大...

hdu1002大数相加

  • 2014年12月16日 12:44
  • 877B
  • 下载

用栈实现了大数相加

  • 2015年02月15日 16:57
  • 954KB
  • 下载

复习C/C++编程之大数相加

两个数相加一直是C/C++最基础的问题,一般性的解法都是定义两个int型变量,然后输出两数相加的结果即可。可是众所周知,int型变量都有它的取值范围。对于不同系统不同编译环境,可能有所不同,比如16位...

大数相加jar包

  • 2016年05月28日 11:51
  • 3KB
  • 下载

面试常见题目:大数相加的Java实现(考虑负数情况)

前言:在做面试题目时,我们经常看到有这样的题目:将两个很大的数相加,超过100位。 网上可以看到很多答案,但是这些答案大部分都是没有考虑负数的情况。 首先我们已经不能直接用log类型进行表示了。一...

大数相加算法

  • 2013年04月09日 14:45
  • 1KB
  • 下载

HDU_ACM_1002_大数相加C源代码

  • 2012年04月19日 19:21
  • 1KB
  • 下载

大数相加原理以及代码(C)

因为C语言里面的int型范围只是32位,所以有时候对于大数很难进行相加,因为会溢出。所以这时候我们可以将大数以字串的形式表示,然后将其变形保存在数组里面。接着对数组进行个位数相加,从最低位开始,所产生...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:6.大数相加优化---
举报原因:
原因补充:

(最多只允许输入30个字)