什么是高精度数?学习高精度数字的表示(加洛谷p1009,c代码)

什么是高精度数?

(高精度数??什么???😳)

大多数人和我一样,看见这个新的名词可能都是一脸懵,不知道这是什么东西,接下来我便开始为大家讲解一下这个新的名词。

我们知道,int最多表示2的31次方-1(前面有符号),unsigned int 也最多表示2的32次方,所以遇见更高位数的数字,这时候用什么类型都不好使用(😳😳),所以这时候就需要用到高精度数要表示——数组或者字符串都可以来表示。

我们主要讲解数组来讲解这个问题,现在开始我们的主题  (-.- 享受知识的洗礼)

就是从左到右依次保留每个位数的值,如果个位大于9,则给十位加一,然后个位%10取余(像不像加减法的进制转换,确实是一模一样的),这就是数组表示高精度数的原理。

例题讲解

接下来我们用一道例题来进行说明,让大家更好的理解。

这道题便是用高精度来表示,如果不用高精度表示确实几部便可写出来,但是发现后两个测试点会报错,开始我也没有了解高精度数,所以也是一脸懵,但是了解过后好像也就那样😏。

这道题我们设置两个数组,我们设a[]来存储前n个阶乘的和,b[]来计算n的阶乘,每次算出阶乘的值,加到a[]中那不就是前n个阶乘的和了吗,问题pass。 

这里需要注意的就是把第一位设置为1,因为0乘任何数都为0,否则后面的阶乘便毫无意义。

接下来我们直接上代码(借鉴一位不知名大佬):

以上便是高精度数的内容了(开溜!!!),高精度数确实比较容易理解,但是自己第一次运用可能还是觉得会有些难度,但是,,,敲代码才是成功的诀窍😜

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值