倒着存数字
约 10 分钟
高精度第一个约定俗成的技巧:低位在前。把个位放进 a[0],十位放 a[1],以此类推。数字 123 存进数组就是 a[0]=3, a[1]=2, a[2]=1。
为什么要倒着存?因为竖式计算的进位总是从个位(低位)流向高位。倒着存之后,低位下标小、高位下标大,进位方向和数组下标增长方向一致,循环从 i=0 往大写就行;而且结果变长时(比如 ),直接在数组末尾追加新的一位,不用把整个数组往后挪。
// 999 + 1 时,进位一路从 a[0] 顶到需要新增的一位
int a[10] = {9, 9, 9}; // 表示 999,低位在前
int len = 3;
// 末尾自然扩展出 a[3]=1,得到 1000(存为 0 0 0 1)
如果正着存,进位要往下标变小的方向走,还得预留高位空间,写起来别扭还容易错。所以从今往后所有高精度都默认倒着存。坑:输出时记得再倒回来,从高位往低位打印。
小纸条
数字 123 倒着存进数组是什么样?
登录 后可看答案