| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 383 人关注过本帖, 1 人收藏
标题:大数相乘问题
只看楼主 加入收藏
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
结帖率:96.23%
收藏(1)
已结贴  问题点数:20 回复次数:4 
大数相乘问题
之前看有人求助关于100的阶乘的代码,当时没考虑那么多,以为用一个Long 型的变量就够了。今天想起来了,写了一个大数相乘的代码,
运行起来貌似没什么错,百度了下相关的代码,发现其他人写的都比我这个长很多。我贴出来大家看看,看看有什么问题。
#include<iostream>
#include<string>
#include<string.h>
#include<malloc.h>
using namespace std;
int *mutiply(char *a,char *b)
{
   int m,n;
   m=strlen(a);//得到输入数字的长度
   n=strlen(b);//得到第二个数字的长度
   int *c=(int *)malloc(sizeof(int)*(m+n));//开辟一个足够存储乘积长度的数组
   int temp=0;//用来存储进位
   for(int i=0;i<=m-1;++i)
   { for(int j=0;j<=n-1;++j)
    {
      c[m+n-i-j-1]=c[m+n-i-j-1]+((a[m-i-1]-'0')*(b[n-j-1]-'0'))+temp;
      if(c[m+n-i-j-1]>9)
        {
          temp=c[m+n-i-j-1]/10;
          c[m+n-i-j-1]=c[m+n-i-j-1]%10;
         }
      else
      temp=0;
    }
  }
    for(int i=1;i<(m+n);++i)
    {
       cout<<c[i];
    }
   cout<<endl;
   return c;
}
int main()
{
    char a[100000];
    char b[100000];
    cout<<"input the first big number!!!"<<endl;
    cin>>a;
    cout<<"input the second big number!!!"<<endl;
    cin>>b;
    cout<<"the answer is:";
    mutiply(a,b);
    return 0;
}
搜索更多相关主题的帖子: include 百度 
2014-03-28 06:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
原理呢?
我的想法是手工模拟  涉及到一是从后向前算 还有累加
我没看到你有这些啊

DO IT YOURSELF !
2014-03-28 06:45
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 2楼 wp231957
差不多也是自己先模拟小一点的数,然后各位相乘,如果大于九则取余,然后取整进位。

想抽苏烟了。
2014-03-28 07:20
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我算的是这样的  比你的那个麻烦多了

程序代码:

              123456789
*             987654321
-----------------------
              123456789
             246913578
            370370367
           493827156
          617283945
         740740734
        864197523
       987654312
+    1111111101
-----------------------
=    121932631112635269

DO IT YOURSELF !
2014-03-28 08:13
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:10 
不是都用bit做的么?不是都在用位运算么?.................
2014-03-28 14:46
快速回复:大数相乘问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022445 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved