我知道这是一个经典的编程问题,因此我想明确表示我不是在寻找代码作为解决方案,但希望能朝着正确的方向前进。我正在学习 C++,作为学习过程的一部分,我正在尝试一些编程问题。我正在尝试编写一个程序来处理高达 10 亿阶乘的数字。显然,这些将是巨大的数字并且太大而无法使用正常的算术运算来处理。任何关于我应该尝试解决此类问题的方向的任何指示都将不胜感激。
如果可能的话,我宁愿尝试在不使用其他库的情况下解决这个问题
谢谢
PS - 问题在这里http://www.codechef.com/problems/FCTRL
这是我用来解决问题的方法,这是通过阅读以下评论来实现的:
解决方案——数字 5 是任何以零结尾的数字的质因数。因此,将阶乘数除以 5,递归地加上商,您将得到阶乘结果中尾随零的数量
EG - 126 中尾随零的数量!= 31
126/5 = 25 余数 1
25/5 = 5 余数 0
5/5 = 1 余数 0
25 + 5 + 1 = 31
这适用于任何值,只需继续除法直到商小于 5