第二部分 基础算法
文章平均质量分 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 · 622 阅读 · 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 · 334 阅读 · 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 · 519 阅读 · 0 评论 -
【高精度】1169_大整数减法
题目相关【题目描述】求两个大的正整数相减的差。【输入】共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。【输出】一行,即所求的差。【输入样例】99999999999999999999999999999999999999999999999999【输出样例】9999999999999999999999990000000000000分析本题考察的是高精度减法。我们可以模拟减法的竖式计算过程从而实现高精度的计算。和高精度加原创 2020-12-21 01:27:21 · 1301 阅读 · 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 · 293 阅读 · 0 评论 -
【高精度】1168大整数加法
题目相关【题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】2222222222222222222233333333333333333333【输出样例】55555555555555555555分析本题考察的是高精度计算中的加法计算。对于超出数据类型范围的数据,我们首先需要解决的就是输入、存储的原创 2020-12-16 22:13:39 · 507 阅读 · 0 评论