信息学奥赛系列教程:高精度计算

信息学奥赛中的高精度计算在处理超出基础数据类型范围的运算时至关重要。本文探讨了如何解决数据输入和存储问题,提出使用字符或字符串存储,并以数组形式记录每位数字,推荐倒序存储以方便位数对齐。运算过程将在后续内容中进一步阐述。
摘要由CSDN通过智能技术生成

为什么要需要高精度计算?

     每种计算机语言的基本数据类型,都有一定的范围限制,在一些科学计算中,当需要运算的算数(加数、减数、乘数、除数)大于基本数据类型所能表示的范围时,需要通过算法来实现这些运算,比如200位的两个数相乘

高精度计算需要解决的问题:

1、数据的输入和存储

      通常情况下,采用字符或者字符串方式输入,用数组来存储输入数的每个位数上的数字

      如“45654756”

     第一种方法,定义一个结构体,结构体中包含一个数组,和一个长度

    第二种方式,只用一个数组,存储,数组的第0个元素存储该数的位数

   本人认为第二种方式更为简洁,更符合使用习惯

    采用“倒序”存储,是将个位放在最前,以便和其他数计算时,位数对齐

//第一种方式,用结构体
struct{
  int len;//表示这个数的位数
  int num[6,5,7,4,5,6,5,4];//存储这个数各位数上的数字
}
第二种方式:用数组的第0位存储该数的位数
num[8,6,5,7,4,5,6,5,4]

以下是输入字符串,将数保存到数组的代码:

#include <iostream>
#include <cstring>
using namespace std;
const int LEN=500;
int aa[LEN];

void inputNum(string ss,int a[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值