首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2023CSP初赛备考复习 || 高精度运算

数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量,变量的类型决定了变量存储占用的空间,不同类型占用存储空间不同并且所表示的数据范围不同

常用类型范围

数据溢出

在C语言中,数据溢出是指变量在进行计算或赋值操作时超出了其数据类型所能表示的范围,导致结果不正确或不可预料的行为

例如

高精度计算

在编程进行数值运算时,有时会遇到运算的表示范围的数值,这种情况下,就需要进行高精度运算。

高精度运算一般包括:高精度加法、高精度减法、高精度乘法、高精度除法。

高精度加法

P1601 A+B Problem

https://www.luogu.com.cn/problem/P1601

大致思路

1 通过数字模拟数字翻转按位相加

2 累加后数字大于9(有2位产生时),需要借助进位变量记录进位数

3 进位数参与下一位累加计算

高精度减法

P2142 高精度减法

https://www.luogu.com.cn/problem/P2142

大致思路

1 数据处理 保证大数-小数,如果不是需要加负号

2 按位相减 减后如果当前为数字小于0,需要向高位借1当10

3 结果位数计算 默认和大数位数相同,如果后面都是0 则不是结果的位数,需要找到第1个不是0的数字

高精度乘法

P1303 A*B Problem

https://www.luogu.com.cn/problem/P1303

大致思路

1 从个位开始,逐位相乘 ,本次相乘下标分别i,j 则 相乘结果保存下标i+j-1,可通过模拟2位相乘得出

2 逐位相乘时先不进位,此时结果数组中可能有2位数存在

3 相乘结束后,再逐位进位

4 2数相乘后的位数,最大是2数位数之和

5 从可能的最大位开始,计算结果的位数,如果高位是0,则此位不是结果的一个位,则进行减少位数

高精度除法-高精度除以单精度

P1480 A/B Problem

https://www.luogu.com.cn/problem/P1480

大致思路

1 从高位开始, 需要注意加上高位余数

2 当前位商保存ans 余数保留参与下一次除法运算

3 结果位数最大为被除数的位数 ,同时去除高位前导0

高精度除以单精度余数

大致思路

1 从高位开始, 需要注意加上高位余数

2 每次和除数b取余数 ,最后保留下来的就是要求的余数

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OSTEe7Ylt_KfQZaCDJwH9W9A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券