大数阶乘(还有不明白的地方——输出部分、计算位数公式)
2009-10-15 23:27
323 查看
#include "stdio.h"
#include "math.h"
int factorial(int n)
{
long a[10000];
a[0]=1;
int i,j,c,m=0,w;
for (i=1;i<=n;i++)
{
c=0;
for (j=0;j<=m;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
}
if (c>0)
{
m++;
a[m]=c;
}
}
w=m*4+log10(a[m])+1;
printf("/n%ld",a[m]);
for(i=m-1;i>=0;i--)
printf("%4.4ld",a[i]);
/*for(i=m;i>=0;i--)
printf("%4.4ld",a[i]);*/
printf("/n");
return w;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d/n",factorial(n));
}
#include "math.h"
int factorial(int n)
{
long a[10000];
a[0]=1;
int i,j,c,m=0,w;
for (i=1;i<=n;i++)
{
c=0;
for (j=0;j<=m;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10000;
a[j]=a[j]%10000;
}
if (c>0)
{
m++;
a[m]=c;
}
}
w=m*4+log10(a[m])+1;
printf("/n%ld",a[m]);
for(i=m-1;i>=0;i--)
printf("%4.4ld",a[i]);
/*for(i=m;i>=0;i--)
printf("%4.4ld",a[i]);*/
printf("/n");
return w;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d/n",factorial(n));
}
相关文章推荐
- 菜鸟的大数阶乘的位数公式计算
- 7.5 编程计算并输出1到n之间所有数的阶乘值
- 7.6 编程计算并输出1到n的阶乘之和
- 输入n值,并利用下列格里高里公式计算并输出圆周率
- 阶乘之和Description 输入n,计算S=1!+ 2!+…+ n!的末6位(不含前导0)。这里,n!表示前n个正整数之积。 Input 输入n,,n≤ 106。 Output 输出S的
- nefu oj 72 计算N的阶乘(位数有很多)
- 公式计算+位数保留
- 2016/1/6 输出菱形 while语句计算阶乘分数之和
- HDU 1018 Big Number(阶乘位数计算)
- 杭电OJ(HDOJ)1018题:求n的阶乘位数(数学公式)
- 【nowcoder 算法训练3】不凡的夫夫(斯特灵公式,阶乘的位数)
- hdu(1018)Big Number(阶乘位数的计算)
- POJ 1423 神奇公式计算N!位数
- 斯特林[striling]公式(求阶乘(n!)的位数)
- 深度学习图片卷积输出大小计算公式
- 分段函数求值:从键盘输入x的值(整型),根据公式1计算并输出x和y的值。
- 问题五十三: 求满足条件n=a!+b!+c!的所有三位数n(a,b,c分别是n的百位十位个位)并输出,要求用自定义函数实现求阶乘。
- 3.5 编写一个程序,从标准输入读入某职员的工作时间(以小时计)和每小时的工资 数,计算并输出他的工资。若职员月工作时间超过 40 小时,则超过部分按原工资的 1.5 倍 来计算。
- 计算输出一个三位数的逆运算
- 计算并输出一个三位数的各位、十位和百位数字之和。