看着这么多会编程的人仔仔细细地计算着,很敬佩。
我作为一个搞天文的向大家提供一个不一样的思路,使用数量级估计,或者叫估算,30秒之内(包括思考和计算时间)给出一个近似的答案,精度在10%以内。
从1到1亿,90%的数在一千万到一亿之间,而这些数字大多数都是15个汉字,类似于,11111111,读作”一千一百一十一万一千一百一十一“。所以,共计 0.9 亿 * 15 = 13.5 亿。
再考虑其余10%的的数字。这些数字有90%都在一百万到一千万之间,绝大多数都是13个汉字,共计大约 0.1 亿 * 13 = 1.3 亿。加上前面的 13.5 亿,得到大约 14.8 亿。
所以我断定,这个数字小于14.8亿,大于13.5亿,即14亿左右。这个答案的误差肯定小于10%,因为像 11111110 这样的省略个位的数字大约占20%,每个只少了一个汉字,导致的偏差小于2%. 其他更少出现的类似于“一千万”这样的数字导致的偏差更小。
这种分析方法还可以继续下去进一步提高精度,我估计甚至可以把精度控制到1%以内。其实这种估算方法有很多的实际意义。比如说,如果要想知道,一个人一秒钟读10个字,要持续不断多久才能念完1到1亿呢?回答是大约 1.4 亿秒,即四年多一点。对于这样的问题,上面的计算精度就足够了。