大数算法与组合数学算法ACM算法库
大数运算的算法库,确实是搞 ACM 的老朋友了。数组模拟大整数那一套,用起来还蛮顺手的。不管是加法、减法还是乘法,全靠你手动一位一位算,虽然有点麻烦,但对理解底层计算逻辑有,训练思维也扎实。
大整数加法用字符串模拟,再转成数组逐位相加。进位怎么搞?直接判断和是不是超过 10,超过就往下一位加。减法同理,不过要多点借位的细节,差值不足就得向高位“借一位”,和小时候笔算一模一样。
乘法的写法稍微麻烦点,要两层循环,每一位都得乘一下累加,挺像小学那会儿打竖式。不过自己写完一遍,真心印象深刻。推荐你手写一下,对底层乘法逻辑有直观理解。
组合数学部分也挺实用,像排列组合、模运算这些,多竞赛题里都绕不开。搞清楚逻辑之后,可以做一套 ACM 题巩固下,效果不错。尤其是你准备比赛或者刷题的话,这类代码真的得掌握熟练。
如果你在刷 ACM 题,或者遇到那种超出内置类型范围的大数问题,可以点进去看看下面这几个资源:
- ACM 大数算法与组合数学算法
- ACM 组合数学
- 组合数学 acm 必备
- 组合数学 ACM 和 POJ 里用到组合数学的题目
- 组合数学资料 ACM 必学课程
- 组合数学 ppt 组合数学 ppt
- 组合数学基础算法基础
哦对了,写这类算法时,最好提前写个normalize()函数统一进位、清理前导 0 啥的,后面调试省事儿多了。如果你想了解更多,也可以试着从几个比赛题里拆一下,收获会更多。
下载地址
用户评论