`
sakakokiya
  • 浏览: 507421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大整数数相乘的问题。(这是2002年在一考研班上遇到的算法题)

阅读更多
void Multiple(char A[], char B[], char C[]) {
    int TMP, In=0, LenA=-1, LenB=-1;
    while(A[++LenA] != ‘\0′);
    while(B[++LenB] != ‘\0′);
    int Index, Start = LenA + LenB - 1;
    for(int i=LenB-1; i>=0; i-) {
        Index = Start-;
        if(B[i] != ‘0′) {
            for(int In=0, j=LenA-1; j>=0; j-) {
                TMP = (C[Index]-'0′) + (A[j]-'0′) * (B[i] - ‘0′) + In;
                C[Index--] = TMP % 10 + ‘0′;
                In = TMP / 10;
            }
            C[Index] = In + ‘0′;
        }
    }
}
 
int main(int argc, char* argv[]) {
    char A[] = “21839244444444448880088888889″;
    char B[] = “38888888888899999999999999988″;
char C[sizeof(A) + sizeof(B) - 1];
 
    for(int k=0; k<sizeof(C); k++)
        C[k] = ‘0′;
    C[sizeof(C)-1] = ‘\0′;
 
    Multiple(A, B, C);
    for(int i=0; C[i] != ‘\0′; i++)
        printf(”%c”, C[i]);
}
分享到:
评论

相关推荐

    大整数相乘问题--分而治之

    1. Karatsuba算法:由苏联数学家Karatsuba于1960年提出,是分而治之思想在大整数乘法中的应用之一。对于两个n位的数A和B,我们可以将它们拆分为高位和低位,即A = A1 * 2^(n/2) + A0,B = B1 * 2^(n/2) + B0。那么,...

    超大整数相乘算法的VB实现源代码

    在计算机科学中,处理大整数是常见的挑战,特别是在加密、计算、数学和财务应用等领域。VB(Visual Basic)作为Microsoft开发的一种编程语言,虽然它不是处理大整数的首选工具,但通过巧妙的编程技巧,依然可以实现...

    大整数相乘算法 分治法

    大整数相乘算法是计算机科学中用于处理超出标准数据类型范围的大整数乘法问题的一种方法。在大多数编程语言中,如C++,整数类型(如`unsigned long`)都有其最大值限制,一旦超过这个限制,就无法正确表示大整数的...

    c/c++笔试题集合

    汇集了知名公司的一些c/c++面试题: 1、关键字static的作用是什么? 2、如何判断一段程序是由c...(这是2002年在一考研班上遇到的算法题) 4、求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)

    分治法求两个大整数相乘

    ### 分治法求两个大整数相乘 #### 一、问题背景及描述 在计算机科学领域,处理大整数的运算是一项常见的需求,尤其是在密码学、数据加密以及某些科学计算场景中。对于传统整数类型(如 `int`, `long` 等)无法表示...

    算法分析PPT(分治法-大整数、矩阵相乘).ppt)

    算法分析PPT(分治法-大整数、矩阵相乘).ppt)

    大整数相乘(C++实现),理论上整数位数任意

    在计算机科学中,大整数相乘是一个常见但复杂的问题,特别是在处理金融计算、加密算法或数学模拟等场景。C++作为一种强大的编程语言,提供了多种方法来处理这种问题。本项目实现了大整数相乘的功能,能够处理理论上...

    数组模拟整数相乘算法

    数组模拟整数相乘算法是一种将两个整数数组的元素对应相乘,然后将结果存储在一个新的数组中的过程。这种算法通常涉及基本的数学运算和数组操作,对于理解和掌握C++语言的数组操作以及算法设计有重要意义。 首先,...

    分治 大整数相乘

    这个思想在很多计算问题中都有应用,包括大整数相乘。 大整数相乘是计算机科学中一个典型的问题,特别是在处理金融、密码学或者数学计算时,可能需要处理超出普通整型变量范围的大数。在传统的算术运算中,我们通常...

    两个10位以上大整数相乘 算法 设计

    在IT领域,尤其是在编程中,处理大整数的计算是一项重要的任务。特别是在数学、加密算法或分布式计算等场景,大整数的乘法运算经常会出现。对于10位以上的整数,C++标准库提供的`&lt;climits&gt;`和`&lt;cstdlib&gt;`等库函数...

    大整数相乘vector容器

    大整数相乘的核心算法通常是基于Karatsuba算法或Toom-Cook算法,这些算法都是分治法的典型应用,它们将大整数分解成较小的部分,然后递归地计算这些部分的乘积,最后组合起来得到最终结果。由于`std::vector`可以...

    大整数相乘算法 大整数分解矩阵相乘

    大整数的乘法 算法课程设计 比较简单大家快来看看吧

    自已写的大整数相乘C++代码

    自己写的大整数相乘算法,算法里包含有大整数相加算法。

    华为的一道面试题,两个长数字相乘

    根据给定的信息,我们可以深入探讨这道华为面试题——“两个长数字相乘”的实现细节与背后的算法原理。 ### 题目解析 题目要求计算两个长整数相乘的结果,这里的“长整数”指的是那些无法直接用现有的数据类型(如...

    两个n位大整数相乘算法.pdf

    【两个n位大整数相乘算法】 在计算机科学中,处理大整数乘法是一项基本操作,特别是在加密、计算几何、数值分析等领域。当涉及的整数位数较大时,传统的乘法算法(如竖式乘法)的效率会变得低下。为了解决这个问题...

    两个大整数相乘的C语言源代码

    是算法分析中的一个实验 用数组实现 用二重循环控制按位交叉相乘

    利用分治法设计一个计算两个n位的大整数相乘的算法,要求计算时间低于O(n2)。

    利用分治法设计一个计算两个n位的大整数相乘的算法,要求计算时间低于O(n2)。支持不同位数大数的相乘。

    Win32下无符号大整数相乘优化算法及其C++实现

    在Win32环境下,处理无符号大整数相乘的问题主要涉及到大整数运算和算法优化。由于32位系统不直接支持超过128位的整数运算,因此需要自定义算法来实现。本文主要介绍了两种优化算法,并提供了一个简单的C++实现。 ...

    两个n位大整数相乘算法.docx

    【两个n位大整数相乘算法】 在计算机科学中,处理大整数乘法是一项基本操作,特别是在加密、计算几何、数值分析等领域。当处理的整数位数较大时,传统的学校乘法规则(竖式乘法)不再适用,因为它的效率较低,时间...

    相当不错的大整数乘法算法

    在描述中提到,这个算法首先计算中间结果,然后处理进位问题,这通常是基于传统的学校教学的竖式乘法方式,即逐位相乘并累加进位。这种算法的时间复杂度为O(n^2),其中n代表大整数的位数。尽管它在处理小规模数据时...

Global site tag (gtag.js) - Google Analytics