zoukankan      html  css  js  c++  java
  • 算法之美--大整数乘法问题

    数组可以实现的算法很多,典型应用就是大整数相乘问题。利用的思想非常巧妙,感觉和链表实现多项式运算有异曲同工,大整数相乘主要避免计算机存储精度不够的时候。按照基本的乘法运算实现即可!

    主要注意返回指针类型,和关键点k=i的技巧。

    /*!
     * file 算法之美--大整数乘法问题.cpp
     *
     * author ranjiewen
     * date 2016/12/04 15:58
     *
     * 
     */
    
    #include <iostream> 
    using namespace std;
    
    #define  SIZE  14
    
    int *multi(int *_num1, int size1, int *_num2, int size2)
    {
        int *ret=nullptr;
        int size = size1 + size2;
        ret = new int[size];
    
        memset(ret, 0, sizeof(int)*size);
    
        for (int i = 0; i < size1;i ++)
        {
            int k = i;   //关键点
            for (int j = 0; j < size2;j++)
            {
                ret[k++] += _num1[i] * _num2[j];
            }
        }
    
        for (int i = 0; i < size;i++)
        {
            if (ret[i]>=10)
            {
                ret[i + 1] += ret[i] / 10;  //注意
                ret[i] = ret[i] % 10;
            }
        }
        return ret;
    }
    
    int main(int argc, char** agrv[])
    {
        int num1[SIZE] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 1, 1, 1, 1 };
        int num2[SIZE] = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5 };
    
        int *ret = multi(num1,SIZE,num2,SIZE);
    
        for (int i = 2 * SIZE - 1; i >= 0;i--)
        {
            cout << ret[i];
        }
    
        delete[] ret;
    
        return 0;
    }
  • 相关阅读:
    大数据之 Spark
    设计模式之——外观or门面模式
    架构设计
    Spring
    高并发系列之——负载均衡,web负载均衡
    高并发系列之——原子性和可见性
    高并发系列之——缓存中间件Redis
    mybatis
    JVM读书笔记
    mybatis中一对一关系映射
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/6131083.html
Copyright © 2011-2022 走看看