![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高精度计算
文章平均质量分 58
咸鱼爱学习
普通的IT爱好者。微信公众号:咸鱼爱学习
展开
-
【高精度】1172_求10000以内的阶乘
题目相关【题目描述】求10000以内n的阶乘。【输入】只有一行输入,整数n(0≤n≤10000)。【输出】一行,即n!的值。【输入样例】4【输出样例】24分析首先n的阶乘是从1开始相乘,乘到n为止的总乘积。定义很简单,但是要注意下数据范围,本题的n最大到达了10000。而13的阶乘就已经解决int范围的极限了,更别提10000了。这道题的答案很大,所以要用大数的方式来进行处理。另外,$n!=(n-1)!\times n $而n的范围又在10000以内,所以可以看作是一个大数乘一个i原创 2021-01-11 23:50:55 · 594 阅读 · 0 评论 -
【高精度】1171大整数的因子
题目相关【题目描述】已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数≤30。【输出】若存在满足 c%k == 0 的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样例】30【输出样例】2 3 5 6分析本题考查的高精度除法。求出c除k的余数,余数为0则输出k。并且计算过程中只有被除数是高精度大数,而除数是个整数型的数字。for(int k=2;k原创 2020-12-25 14:31:52 · 321 阅读 · 0 评论 -
【高精度】1170_计算2的N次方
题目相关【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32分析本题考察的是大数乘法。需要注意观察数据范围,int的范围极限接近2312^{31}231 ,本题中N的范围使得最后的数值会超过int范围极限,甚至是long long范围极限。那么此时可以采用高精度乘法的思想来进行处理。并且,这一题是求2的次方值,只需将值与2相乘即可。实际上是一个高精数字与整数数字相乘。模拟竖式原创 2020-12-21 01:35:53 · 480 阅读 · 0 评论 -
【高精度】1169_大整数减法
题目相关【题目描述】求两个大的正整数相减的差。【输入】共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。【输出】一行,即所求的差。【输入样例】99999999999999999999999999999999999999999999999999【输出样例】9999999999999999999999990000000000000分析本题考察的是高精度减法。我们可以模拟减法的竖式计算过程从而实现高精度的计算。和高精度加原创 2020-12-21 01:27:21 · 1217 阅读 · 1 评论 -
【高精度】1170_2的N次方
题目相关【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入】输入一个正整数N。【输出】输出2的N次方的值。【输入样例】5【输出样例】32分析本题考察的是大数乘法。需要注意观察数据范围,int的范围极限接近2312^{31}231 ,本题中N的范围使得最后的数值会超过int范围极限,甚至是long long范围极限。那么此时可以采用高精度乘法的思想来进行处理。并且,这一题是求2的次方值,只需将值与2相乘即可。实际上是一个高精数字与整数数字相乘。模拟竖式原创 2020-12-16 19:56:53 · 266 阅读 · 0 评论 -
【高精度】1168大整数加法
题目相关【题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】2222222222222222222233333333333333333333【输出样例】55555555555555555555分析本题考察的是高精度计算中的加法计算。对于超出数据类型范围的数据,我们首先需要解决的就是输入、存储的原创 2020-12-16 22:13:39 · 493 阅读 · 0 评论 -
高精度计算(三)大数除法
若我们只考虑求解相除的商。高精除低精过程分析所谓高精除低精指的是被除数值特别的大,除数值的范围在int类型范围内。在模拟开竖式的过程当中,可以发现,除法和加、减、乘不一样,他是从高位开始计算的。所以,除法是不需要进行倒置存放的。过程当中我们也能发现,每一次都是将之前计算的余数和后面的数字结合成新的数字再进行除法计算。int x=0;//存储余数for(int i=0;i<l;i...原创 2020-04-30 13:38:00 · 1100 阅读 · 0 评论 -
高精度计算(一)大数加减法
概述 当计算的数值非常大或是对于计算的精度要求非常搞事,用已知的数据类型无法精确地表示数值。可以采用数组来模拟大数运算的过程。高精度加法两个大数进行相加计算时,要解决三个问题如何存储如何计算如何输出答案先解决第一个问题,数据地存储,由于数据过于庞大,已知的数据类型无法精确地表示数值,会发生数据溢出问题。此时可考虑将数据拆分,将大数分割成若干个0~9数字组成的整体。这样的结构能让...原创 2019-09-03 16:48:16 · 654 阅读 · 0 评论 -
高精度计算(二)大数乘法
大数乘法 大数乘法处理的过程也是分为三部分。存储计算输出分析存储与输出与大数加减法方法一致。区别在于中间计算的过程。在平时,我们使用竖式进行乘法计算时,和加法很相似,从低位开始进行计算,也需要考虑进位操作。区别在于,我们将下面一行的数字相乘计算时,是需要进行错位相加的。这边的关键之处在于如何体现出错位这一位置关系。第一行 j第二行 i答案m000...原创 2020-04-30 00:39:51 · 743 阅读 · 0 评论