2%跟5%米诺地尔哪种好:怎样不求n!而求出n!的数字和??

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 19:00:05
例如5!=120,则f(5)=1+2+0=3.
请教这个算法如何进行.
如果是PASCAL可以直接给个代码..
否则,描述一下算法!!

谢谢!!
[b]别忘了,不能先算n!的值!!

应该没有这样的算法吧,我以前是OIer。这只是一道高精度算法的题吧。

Option Explicit

Private Sub Command1_Click()
Dim result As Long
Dim adding As Long
Dim i As Long
Dim n As Long
n = 5
result = jc(n)
For i = 1 To Len(result)
adding = adding + Val(Mid(result, i, 1))
Next
Me.Caption = adding
End Sub

Private Function jc(num As Long) As Long
Dim i As Long
jc = 1
For i = 1 To num
jc = jc * i
Next
End Function

不先算n! , 就算出n!的结果的各位的和是不可能.

不先算n!是不可能的,算了落,现在机子这么先进,算个阶乘不会卡死人落。
得到阶乘后再来个循环,把每位的数字用MID函数取出来(不知道在PASCAL里是不是叫MID,反正肯定有个功能类似的函数落),在用VAL函数转换为数值型,累加即可。

先想说没有这样的方法,只有求n!
本来我想翻译一楼的程序,然后发现他是错的。
请你先给出n的范围,没有范围这个问题的方法可能完全不同。
To三楼,要是n=32767或者100000000怎么办?只会VB的人是永远不会理解什么叫真正的“算法”的。