送分50

lovelinzi 2002-01-25 09:54:58
编写一个程序,算出1000的阶乘!
...全文
85 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
renli21 2002-01-26
  • 打赏
  • 举报
回复
Think in C++
The C++ Programming Language
Effective C++
More Effective C++
^^^^^^^^^^^^^^^^^^

书籍仍在增加,
注册用户可长期免费下载。

http://pat.chinaccd.net/cpp
rhesus 2002-01-26
  • 打赏
  • 举报
回复
谢了
zzw168 2002-01-26
  • 打赏
  • 举报
回复
结果太大,要用数组来解决!!
acqy 2002-01-26
  • 打赏
  • 举报
回复
用64位的浮点数
naturerythm 2002-01-26
  • 打赏
  • 举报
回复
编写一个程序,算出1000的阶乘!
由于1000!有lg(1)+lg(2)+.........log(1000)=2567 +1 位,所以不能用普通的
方法做,应用最基本的方法---模拟乘法做,
a b c d
e f
____________________
af bf fc fd
ed ec eb ea
两个字母表示相乘。
例如:4567*34
a[]={ 4,5,7,4}
b[]={0,0,3,4}
c[]=a*c= 16 20 28 16 处理进位-------〉 1 8 2 9 6
12 20 28 16 处理进位-------> 1 4 2 9 6

照此写算法。
这个问题的关键在于怎样模拟乘法,我是用了最容易想到的,也是最笨的,
应该还有其他好的方法。
还有:由于1000!最后应该有
1000/5 +1000/25+1000/125+1000/625=200+40+8+1=249个0,可以利用这
一点来减少计算的次数。



tigermount 2002-01-25
  • 打赏
  • 举报
回复
有越限之嫌
Francky 2002-01-25
  • 打赏
  • 举报
回复
#include <stdio.h>

int factorial(int iNumber)
{
if(iNumber=1)return 1;
else return (iNumber*factorial(iNumber-1));
}

int main()
{
printf("1000!=%d\n",factorial(1000));
}
courteous 2002-01-25
  • 打赏
  • 举报
回复
int i=j=1;
while(++i<=1000) j*=i;
too hard for a child like us!!!
Kusk 2002-01-25
  • 打赏
  • 举报
回复
高精度计算。不过好像有特殊算法。效率很高。
AixBall 2002-01-25
  • 打赏
  • 举报
回复
if(N == 1000)N的阶乘 = 1000!; 不知道这个答案你满不满意?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧