con*_*fin 15 c++ integer factorial
我知道这是一个经典的编程问题,因此我想明确我不是在寻找代码作为解决方案,但我会欣赏正确的方向.我正在学习C++,作为学习过程的一部分,我正在尝试一些编程问题.我正在尝试编写一个程序来处理数十亿的因子.显然,这些将是巨大的数字,并且太大而无法处理使用正常的算术运算.任何迹象表明我应该尝试解决这类问题的方向,我们将不胜感激.
如果可能的话,我宁愿尝试解决这个问题而不使用额外的库
谢谢
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
撇开这个问题,不确定我是否真的做对了,但这是一个演绎猜测:
第一个问题 - 如何在数字结尾处得到零?乘以10.
你如何乘以10?通过乘以10或2 x 5 ...
所以,对于X!你有多少10s和2x5s ......?
(幸运的是2和5是素数)
编辑:这是另一个提示 - 我认为你不需要做任何乘法.如果您需要其他提示,请告诉我.