高精度?什么鬼!(附题表与详细讲解:更新ing)

相关内容:

1 高精度基础1:a+b

2 高精度基础2:a-b

3 高精度基础3:a*b

写在前面:

高精度也叫大整数,指当运算过程,产生一些超出整形(int)甚至(longlong)的数据的时候,计算机不能使用内置的运算器进行运算的时候。

我们需要用数组来替代数位模拟运算,其实就是模拟运算的思维,对大数据范围的特殊处理,并不是特别神秘的东西。

高精度的相关代码,都是比较繁琐,需要你对每个细节构思清楚,是入门选手第一次感受到的“长代码”。

只要你学会了数组和拆数位,就能轻松理解哦!!今天我们就从四则运算开始,尝试理解高精度吧!

问:高精度是什么?

答:就是列竖式计算!!还是一步一步地写,最笨的那种!


知识点罗列:从 int ---> longlong ---> 高精度

1、什么是int:

用通俗的话讲,int范围内的数学运算,计算机都是口算完成的,非常快;

在目前的比赛机制下(2018年),NOIP默认用32位的系统进行编译和评测,所以我们平时定义的整数类型 int 的范围[-2^31 , 2^31 -1] 即 [-2147483648,2147483647]之间,在这个数据范围内,计算机可以通过二进制运算,O(1)的运算量算出答案;

2、什么是long long

用通俗的话讲,longlong 范围内的数学运算,计算机悄悄地自己列竖式计算,比较快;

从win7开始,计算机普遍已经进入64位的时代,在计算机的层面上int类型的数位长度已经增长到了2^64,

但是针对noi的相关比赛,编译器和评测机等客观条件的制约,还是要用特殊的数据类型来表示:long long。

long long 可以存储8字节8位可表达位数:2^64=18446744073709600000 

范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)

longlong的运算,本质也类似高精度,是一中模拟运算,只是效率会比较高。

3、如果数据超过了 long long 怎么办?高精度运算!!!

用通俗的话讲,超过longlong的数据运算,计算机罢工了,要我们教它“列竖式”在算出来答案,比较慢。

高精度的基础原理,其实就是将一个数字进行数位拆分,将每一个数位放到数组中独立的格子内,用一个数组来表示一个整数;进行算术运算的时候,再用函数的思维,人为地进行列竖式计算,一位一位地处理,时间复杂度和数据的长度有关;所以用高精度处理的数据,只是一堆独立数位的单个数字,而不是真正意义上的“数”。


知识回顾:列竖式计算

有同学会纠结,小学三年级我就会列竖式了,还需要您来回顾吗? 别急,难得有图,就看一看呗,又不收钱。

以a+b的样例:9584879778+93572018

1.1 我们进行一次详细的列竖式计算模拟:

第一步: 各数位分别求和

第二步:按顺序进位

根据以上两步操作:9584879778+93572018=1052059996

 

恭喜你!你已经完全理解了高精度加法的思维精髓

是不是一脸懵逼呢?!,别着急,ls不会骗你,你真的学会了思维,只是还不知道怎么用。


高精度运算基础题表
编号题目相对难度1-5知识点讲解
1大整数加法2a+b
2大整数减法2a-b
3计算2的N次方3高*低
4大整数的因子4高/低
5求10000以内n的阶乘4高*低
6阶乘和5高*低
7大整数乘法5高*高
8A*B Problem5无符号高*高
9带符号的大整数加法5a+b
10带符号的大整数减法5a-b
11带符号的大整数乘法5带符号高*高
12A/B6高/高
    
    
    
    
    

 

 

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值