热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

两个n位数的运算

问题描述:设X,Y是两个n位的十进制数,求X*Y。问题分析:1.X,Y都是同等位数的十进制数。2.因为位数为n位,所以有可能很大,不能进行直接的计算,所以必须想办法拆分。

问题描述:设X, Y是两个n位的十进制数,求X*Y。


问题分析:

1.X,Y都是同等位数的十进制数。
2.因为位数为n位,所以有可能很大,不能进行直接的计算,所以必须想办法拆分。
3.可以使用分治算法,因为我的老师正好在讲解分治算法,所以练习一下。


例子:18*26

分析:

18=1*10+8; 26=2*10+6;


解法1:

18*26=1*2*10*10+(8*2+1*6)*10+6*8; (1)

因此可以写出其计算模型:
这里写图片描述

写出其递归时间分析公式:
这里写图片描述

最后求得T(n)=O(n2);


解法2:

对(1)进行优化:(ab*cd中:ad+bc=(a-b)*(d-c))
18*26=1*2*10*10+((1-8)*(6-2)+1*2+8*6)*10+6*8; (2)

(为什么说是优化呢?因为对计算机硬件而言,的确是做出了优化;在(1)中,除了乘以十,进行了四次乘法;在(2)中,除了乘以十,做了五次乘法,不过有两个是重复的,可以直接在CPU的寄存器或者存储器直接调用,而不需要反复计算;相当于就是做三次运算)(看起来优化不大,对吧,等下看看实际效果。)(该思想由他提出:Anatoly Karatsuba)

计算模型:
这里写图片描述

递归的时间分析:
这里写图片描述

最后可求得T(n)=O(n^1.59)(这已经是低阶与高阶的差距了。)

补充完整:递归的结束公式:
当输入规模为1的时候,返回该值;


伪码描述:

DIVIDE_CONQUER(x,y,n){  //x,y:代表待处理的数字;n:表示xy为n位整数
    if x==0 || y==0  //针对尾数为0的情况
        return 0
    else if n==1
        return x*y
    else
        x1=x/(pow(10,n/2));
        x0=x%(pow(10,n/2));
        y1=y/(pow(10,n/2)); y2=y/(pow(10,n/2));
        z1=DIVIDE_CONQUER(x1,y1,n/2);
        z2=DIVIDE_CONQURR(x0,y0,n/2);
        z3=DIVIDE_CONQUER((x1-x0),(y0-y1),n/2)+z1+z2;
        return z1*pow(10,n)+z3*pow(10,n/2)+z3;
    }

推荐阅读
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 深入解析 HDFS Federation:多命名空间架构详解
    HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • IT项目管理过程中的方法、工具、技术
    工欲善其事,必先利其器。而对于一个软件开发项目,最重要的器就是方法,工具和技术。而这三要素中重要的又是方法论,方法是基础&# ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
author-avatar
书友56183408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有