关闭

大数运算之加法和乘法算法C++模板

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

大数加法:

void caladd(char *a,char *b,char *res)
{
    int lena=strlen(a);
    int lenb=strlen(b);
    int i=lena-1,j=lenb-1,k=0;
    while( (i+1) || (j+1) )
    {
        if(i!=-1) res[k] += (a[i--]-'0');
        if(j!=-1) res[k] += (b[j--]-'0');
        res[k+1] += res[k]/10;
        res[k++] %= 10;
    }
    while(!res[k]&&k>1)k--;
    if(res[k])k++;
    res[k]=0;
    for(int s=k-1; s>=0; s--)
        res[s]+='0';
    for(int s=0; s<=(k-1)/2; s++)
        swap(res[s],res[k-1-s]);
}

大数乘法:

void calmutiply(char *a, char *b , char *res)
{
    int lena=strlen(a);
    int lenb=strlen(b);
    int k=0;
    for(int i=0;i<lena; i++)
        for(int j=0; j<lenb; j++)
        {
            res[i+j]+=(int)((a[lena-1-i]-'0')*(b[lenb-1-j]-'0'));
            if(res[i+j]>9)
            {
                res[i+j+1]+=res[i+j]/10;
                res[i+j]%=10;
                if(i+j+1>k)k=i+j+1;
            }
            else if(res[i+j]&&i+j>k)k=i+j;
        }
    for(int s=k; s>=0; s--)
        res[s]+='0';
    for(int s=0;s<=k/2;s++)
        swap(res[s],res[k-s]);
}

推荐大数运算用Java(当然Python也行), C++的确实难写, 并且局限性很高. 位数大了要计算很久.

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

关于Django模板不能运算的临时解决办法 在Django 模板template 中实现加法,减法,乘法,除法运算

今天用django模板显示数据的时候,想根据数据库内id号取模来实现显示不同的CSS类。结果测试了一天也没运算成功。后来查了大量官方文档才知道,模板是不支持数学运算的(真是个让人绝望的缺陷)。没办法,...
  • u011676589
  • u011676589
  • 2014-11-13 11:22
  • 3476

大整数加减乘除及取模运算 C++实现

最近事情实在是太多了,一直没有时间写博客,昨天刚刚忙完硕士开题,虽然还是有很多的事情要做, 但实在是不想弄了。想起一个月之前就已经写完的一个大整数加减乘除法的程序,今天把它贴出来和大家分享, 目前我只...
  • doufei_ccst
  • doufei_ccst
  • 2013-12-10 21:21
  • 7737

ecshop dwt模版smarty支持加减乘除运算

ecshop dwt模版smarty支持加减乘除运算   /**  * ECSHOP 模版类  * ========================================...
  • zhangfeng1133
  • zhangfeng1133
  • 2016-05-05 02:12
  • 3345

C/C++大数运算 string版实现大数乘法 大数加法 大数除法

C/C++大数运算 string版实现大数乘法 大数加法 大数除法 string operator+(string s1,string s2) //大数加法 { if(s1.len...
  • winter2121
  • winter2121
  • 2017-08-01 15:42
  • 89

大数运算(加法/减法/乘法/除法/幂运算)

  • 2010-01-17 16:09
  • 228KB
  • 下载

c++大数加法乘法源码

  • 2010-12-10 12:26
  • 710KB
  • 下载

大数运算——加法,减法,乘法 .

尝试实现了下大数运算的代码。 原理就是用int型数组模拟一个大数的每个位。 数组的[0]对应的大数的个位。     具体代码如下,主要考虑大于10的元素要进位,负数要借位。   ...
  • jazywoo123
  • jazywoo123
  • 2011-12-16 09:56
  • 593

大数运算——加法,减法,乘法

尝试实现了下大数运算的代码。原理就是用int型数组模拟一个大数的每个位。数组的[0]对应的大数的个位。  具体代码如下,主要考虑大于10的元素要进位,负数要借位。 #include #includ...
  • hairetz
  • hairetz
  • 2011-04-08 20:04
  • 12019

大数运算——加法,减法,乘法

尝试实现了下大数运算的代码。 原理就是用int型数组模拟一个大数的每个位。 数组的[0]对应的大数的个位。     具体代码如下,主要考虑大于10的元素要进位,负数要借位。   ...
  • xiaoxiaoqinghe
  • xiaoxiaoqinghe
  • 2011-09-25 21:44
  • 220

高精度 大数加法 乘法 除法 幂 模板

高精度 大数加法 乘法 除法 幂 模板
  • u012860063
  • u012860063
  • 2014-07-04 18:12
  • 1419
    个人资料
    • 访问:36748次
    • 积分:3326
    • 等级:
    • 排名:第11808名
    • 原创:305篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章分类