【概述】

利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的尾数可达到几十甚至几百位,虽然计算机本身精度足够高,但受硬件限制,往往达不到实际问题所要求的精度,因此我们用程序设计的方法去实现这样的高精度计算。

除 C++ 高精算法之外,还可以选用 Java 大数类来处理高精问题,而且由于 Python 没有数据类型的限制,因此也可用 Python 来解决高精问题。

【要处理的问题】

1.数据接收与存储:当数据很长时,可以用字符串方式输入,利用字符串函数和运算操作,将每一位取出存入数组中。

void input()
{string s;cin>>s;//读入字符串a[0]=s.length();//用a[0]存储字符串s的位数for(i=1;i<=a[0];i++)//将数串转为数组a,并倒序存储a[i]=s[a[0]-i]-'0';
}

2.位数的确定:接收时使用字符串,所以它的位数等于字符串的长度。

3.补零问题:当两个操作数长度不一样时,需要进行补零。

void fixed()
{string str1,str2;int len1,len2;int i;cin>>str1;//读入字符串1cin>>str2;//读入字符串2len1=str1.length();//求字符串长度1len2=str2.length();//求字符串长度2if(len1<len2)//当字符串1<字符串2时,对字符串1补零for(i=1;i<=len2-len1;i++)str1="0"+str1;else//当字符串1>字符串2时,对字符串1补零for(i=1;i<=len1-len2;i++)str2="0"+str2;
}

4.进位、借位处理

加法:c[i]=a[i]+b[i];
          if(c[i]>=10)

{ c[i]%=10;++c[i+1]; }

减法:if(a[i]<b[i])
          { --a[i+1];a[i]+=10; }

c[i]=a[i]-b[i];

乘法:c[i+j-1]=a[i]*b[i]+x+c[i+j-1];
           x=c[i+j-1]/10;

c[i+j-1]%=10;

5.商和余数的处理:视被除数、除数的位数情况进行处理

【分类】

  1. 高精度加法    点击这里
  2. 高精度减法    点击这里
  3. 高精度乘法    点击这里
  4. 高精度除法    点击这里
  5. Java 大数类:点击这里

【例题】

1.入门模版题

  1. A+B Problem(高精)(洛谷-P1601)(高精加):点击这里
  2. 大整数加法(信息学奥赛一本通-T1168)(高精加):点击这里
  3. 高精度减法(洛谷-P2142)(高精减):点击这里
  4. 大整数减法(信息学奥赛一本通-T1169)(高精减):点击这里
  5. A*B Problem(洛谷-P1303)(高精乘):点击这里
  6. 高精度乘法(信息学奥赛一本通-T1307)(高精乘):点击这里
  7. 大整数乘法(信息学奥赛一本通-T1174)(高精乘):点击这里
  8. 求10000以内的阶乘(信息学奥赛一本通-T1172)(高精乘):点击这里
  9. 计算2的N次方(信息学奥赛一本通-T1170)(高精乘):点击这里
  10. 阶乘和(信息学奥赛一本通-T1173)(高精乘+高精加):点击这里

2.混合题

  1. B进制星球(洛谷-P1604)(高精度加法+递推):点击这里
  2. 回文数(信息学奥赛一本通-T1309)(高精加+条件判断):点击这里
  3. 除以13(信息学奥赛一本通-T1175)(高精除低精+预处理):点击这里
  4. 高精除(信息学奥赛一本通-T1308)(高精除高精):点击这里
  5. 大整数的因子(信息学奥赛一本通-T1171)(高精除分解因数):点击这里
  6. 国王游戏(洛谷-P1080)(高精乘+贪心):点击这里

3.Java 与 Python

  1. 初中的算术(51Nod-1873)(Java):点击这里
  2. 一半的一半(51Nod-2382)(Java):点击这里
  3. Applese 涂颜色(2019牛客寒假算法基础集训营 Day4-E)(Java+推导):点击这里
  4. Resistors in Parallel (Gym-102028E)(Java+推导):点击这里
  5. Fibonacci in the Pocket(ZOJ-4108)(Java+斐波那契数列):点击这里
  6. Chilly Willy(CF-248B)(Python+暴力):点击这里
  7. 处女座的百日理财计划(2019牛客寒假算法基础集训营 Day3-H)(Python+DP):点击这里

基础算法 —— 高精度计算相关推荐

  1. 基础算法 —— 高精度计算 —— Java 大数类

    [概述] 在 C++ 中数据类型的长度最多能到 64 位,一旦超出这个位数,就要用数组进行模拟计算,即高精度算法 而在 Java 中有两个类:BigInteger.BigDecimal 分别表示大整数 ...

  2. 基础算法 —— 高精度计算 —— 高精度加法

    [算法分析] 输入两个数到两个变量中,然后用赋值语句求他们的和,输出. 但是,我们知道,在C++中任何数据类型都有一定表示范围.当两个被加数很大时,上述算法显然不能求出精确解,因此寻求另外一种方法. ...

  3. 基础算法 —— 高精度计算 —— 高精度除法

    [高精除以低精] 1.算法分析 做除法时,每一次的商的值都在0~9,每次求得的余数连接以后的若干位得到新的被除数,继续做除法.因此在做高精度除法时,要涉及到乘法运算和减法运算以及移位处理. 为程序简洁 ...

  4. 基础算法 —— 高精度计算 —— 高精度乘法

    [算法分析] 类似加法,用竖式求乘法.在做乘法运算时,同样有进位,同时对每一位进行乘法运算时,必须进行错位相加. 分析c数组下标变化规律,可以写出如下关系式:Ci=C'i+C''i+... 由此可见, ...

  5. 基础算法 —— 高精度计算 —— 高精度减法

    [算法分析] 类似加法,可以用竖式求减法.在做减法运算时,需要注意的是:被减数必须比减数大,同时需要处理错位以及前导0. [模版] #include<iostream> #include& ...

  6. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  7. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

  8. 暑期集训2:ACM基础算法 练习题G:POJ - 1298

    2018学校暑期集训第二天--ACM基础算法 练习题G  --  POJ - 1298 The Hardest Problem Ever Julius Caesar lived in a time o ...

  9. 暑期集训2:ACM基础算法 练习题C:CF-1008A

    2018学校暑期集训第二天--ACM基础算法 练习题A  --   CodeForces - 1008A Romaji Vitya has just started learning Berlanes ...

最新文章

  1. 计算机网络-数据链路层
  2. NSInteger,NSUInteger,NSNumber
  3. qt 实现拖动矩形角度_Qt 绘图之图形视图框架
  4. tomcat https 启用8443加证书
  5. 使用docker部署skywalking
  6. [2018.07.14 T3] B君的第六题
  7. 如何清理苹果MAC电脑系统缓存数据?
  8. ie11 java8 nc_用命令卸载Win8 IE9/IE10/IE11浏览器
  9. 什么是虚短、虚断、虚地
  10. 一种小封装485芯片
  11. Ubuntu 16.04 状态栏实时显示网速、CPU、内存等
  12. android 360开机启动,手机360设置开机启动项
  13. android 动画变成素材,AE技法-把AE动画转换成Android原生动画,撂倒GIF做动画
  14. CompareTo和compare的区别
  15. Python自定义一个异常类【注释详细】
  16. shell trim函数
  17. windows xp下如何添加开机自启动的程序
  18. oracle缩减表空间大小,Oracle表空间释放与增加表空间大小
  19. 宝剑锋从磨砺出,梅花香自苦寒来
  20. 百度手机输入法for android16,百度手机输入法oppo版

热门文章

  1. 院士怒批:中国科研被SCI和西方支配,贫于创新、贫于思想
  2. 含有运算放大器的电阻电路
  3. CANOpen报文类型
  4. python importlib_学习python importlib的导入机制
  5. 去大厂也就图一乐,真人上人还得是外包
  6. 大学生利用漏洞薅肯德基羊毛,获刑两年半
  7. 为什么计算机中0.2+0.1不等于0.3!?
  8. 中台不火,天理难容!
  9. 这两天有点热吆,star直线上涨!~Jeecg Boot
  10. 基于HiKariCP组件,分析连接池原理