本帖最后由 fantacyleo 于 2014-7-6 23:16 编辑
这个题的思路是寻找末尾0产生的条件。
尾数是1、3、7、9的数参与乘法运算,不影响乘积末尾0的个数。比如3,3*6*5末尾0的个数和6*5末尾0的个数是一样的。原因很简单:3*m,如果m末尾不含0,3*m乘积末尾不可能是0。如果m末尾含0,去掉末尾0的部分与3相乘不可能产生末尾0,因此3*m的末尾0的个数与m相同。同理可以证明尾数是1、3、7、9的数参与乘法运算,不影响乘积末尾0的个数
那么要考虑的只剩下尾数是偶数(包括0)或5的数。进一步分析,末尾0来自2*5(其他偶数乘以5可以分解为2乘以5),因此只要看1-1000中的数可以分解出多少对[2 5]。显然2的个数要多于5,能凑成多少对[2 5]完全取决于5的个数。那么,只要设一个计数器,对1-1000的每个数,不断除5直到不能整除为止,每整除1次,计数器+1 |