您的位置:首页 > 其它

整理笔记 1大数阶乘

2013-10-31 14:32 253 查看


大数阶乘

时间限制:3000 ms | 内存限制:65535 KB
难度:3描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它?输入输入一个整数m(0<m<=5000)
输出输出m的阶乘,并在输出结束之后输入一个换行符
样例输入
50
样例输出
30414093201713378043612608166064768844377641568960512000000000000
来源经典题目
上传者
张云聪这是暑假里做的题,大数类问题,但是这种大数类问题不同于一般的大数加减乘法,我理解的大数类问题,一定要把 运算 和 进位 分开来想,这是关键先贴代码:
#include
<stdio.h>
02.
int
a[100000];
03.
int
main()
04.
{
05.
int
n,m,i,j;
06.
int
digit=1;
07.
int
jinwei=0;
08.
scanf
(
"%d"
,&n);
09.
a[0]=1;
10.
for
(i=2;i<=n;i++)
11.
{
12.
for
(j=1,jinwei=0;j<=digit;j++)
13.
{
14.
m=a[j-1]*i+jinwei;
15.
a[j-1]=m%10;
16.
jinwei=m/10;
//运算思想
17.
}
18.
while
(jinwei)
19.
{
20.
a[++digit-1]=jinwei%10;
21.
jinwei/=10;
//进位思想
22.
}
23.
}
24.
for
(i=digit-1;i>=0;i--)
25.
printf
(
"%d"
,a[i]);
26.
printf
(
"\n"
);
27.
28.
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: