实时搜索: 50的阶乘末尾有几个零

50的阶乘末尾有几个零

682条评论 4662人喜欢 4500次阅读 702人点赞
#include<iostream>
using namespace std;

int main()
{
int N;
cout<<"Please input an integer:";
cin>>N;
int a[100]={1};
int i=2,j=0,k;
for(i=2;i<=N;i++)
{
int s=0;
for(j=0;j<100;j++)
{
k=a[j]*i+s;

100的阶乘除以50的阶乘乘以1/2的100次方等于多少?: 2.4206e+063

1到50阶乘的和为多少: int main()
{
int n,i,j;double sum,b;

sum=0;
for(i=1;i<=50;i++)
{
b=1;
for(j=1;j<=i;j++)
b=b*j;
sum=sum+b;}
printf("%g",sum);
return 0;
} 这种方式精度不高,指数表示。

C++问题,50阶乘,会的看一下: 主要思路是把数的每一位数字保存在数组每一个元素中

for(j=0;j<100;j++){
//从低位依次向高位扫描

k=a[j]*i+s;
// s表示进位数,初始为0;这句意思即是将数的每一位数字a[j]同i 相乘并加上前一次计算的进位数,结果保存在k中

a[j]=k%10;
//当前计算数位的计算结果取个位数作为最终结果

s=k/10;
//进位数记录在s中,供下一次使用

}

在vc6的编译环境下为了计算s=50(即50的阶乘)则s变量应定义为什么: 这个需要使用高精度运算,可以定义为一个INT类型的数组,每一个数组元素代表一位。

汇编编程求50的阶乘,结果存入EDX,EAX中,求大神: http://bbs.csdn.net/topics/340175952 可以参照一下

数学题:50!(50的阶乘)等于多少?用正确的方法表示: /*求50!的算法
*
*/
#include<stdio.h>
#define m 100000
int main()
{
long dd[m]={1},bit=0,tmp,top=1;
int i,j,x;
for(i=2;i<=50;i++)
{
for(j=0;j<top;j++)
{
dd[j]=dd[j]*i;
}
for(j=0;j<top;j++)
{
tmp=dd[j];
dd[j]=(bit+tmp)%10;
bit=(bit+tmp)/10;
}
while(bit>0){
dd[top++]=bit%10;
bit=bit/10;
}
}
for(i=top-1;i>=0;i--)
printf("%d",dd[i]);
printf("\n");
return 0;
}

这是我写的计算50!在linux下测试通过
看看吧

用c语言 求阶乘50!的具体数值及其位数并输出结果: 尽管已有推荐答案,觉得还是为你提供一个代码参考为好。这段代码可以输入系统允许长度的十进制整数,然后输出它的阶乘的位数和阶乘值!你可以在VC++6.0中试试……
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"
void main(void){
char *pResult,*pSect,*p,pTemp[12];
int ln,n,i,j,lp,lm,k;
double lDec=0;

printf("请输入阶乘数...\nnDec=");
scanf("%d",&n);
ln=n;
while(ln>1) lDec+=log10(ln--);//求需要的空间
ln=(int)lDec+1;
if(n==1 || n==0){
printf("%d!长1位...\n%d!=1\n",n,n);
exit(0);
}
else printf("%d!长%d位...\n%d!=",n,ln,n);
lp=strlen(ltoa(n,pTemp,10));
if(!(p=(char *)malloc(lm=2*(ln+lp)+2))){//申请内存
printf("申请内存失败!\n");
exit(0);
}

memset(p,0,lm);
pResult=p+1;
pSect=p+ln+2;
strcpy(pSect,pTemp);
for(i=0;i<lp;*(pSect+i++)&=15);

while(--n>1){
ltoa(n,pTemp,10);
memset(pResult,0,lp);
for(i=0;lp--;i++){ //模拟竖式乘法--n>1
for(j=0;pTemp[j];j++)//转为整形求位积存储
pResult[i+j]+=pSect[i]*(pTemp[j]&15);

k=i+j;
for(j=k-1;j>0;j--){
if(pResult[j]>9){
pResult[j-1]+=(pResult[j]-pResult[j]%10)/10;
pResult[j]%=10;
}
}
}
i=0;
while(*pResult>9){
pResult--;
*pResult=(pResult[1]-pResult[1]%10)/10;
pResult[1]%=10;
k++;
i++;
}
memcpy(pSect,pResult,k);//将部分积作为被乘数
pResult+=i;
lp=k;
}
for(i=0;i<ln;i++) printf("%d",*(pResult+i));//输出

free(p);//释放空间
printf("\n");
}

编写一个java小程序 求50阶乘并输出到屏幕: //int型输出不了那么大的  可以用BigInteger来实现
public static void main(String[] args){
BigInteger bi = new BigInteger("1");
for (int i = 1; i <= 50; i++) {
BigInteger bigInteger = BigInteger.valueOf(i); 
bi = bi.multiply(bigInteger);
System.out.println(i+"!="+bi);
}
}

  • 2014执业药师考多少分通过

    CAD旋转世界的命令是什么: cad 普通旋转就是RO 和镜像MI ...

    708条评论 4386人喜欢 3066次阅读 271人点赞
  • echarts保留几个省份

    我在CAD画图时~shift+鼠标左键来旋转。旋转后如何回到原来平面图啊?: 点视图,里面有个三维视图,然后选择你要的试图就OK了。 ...

    822条评论 5560人喜欢 3981次阅读 882人点赞
  • mac如何锁屏快捷键

    为什么CAD中两个标注使用相同的样式但形式却不一样?: CAD软件允许属于同一标注样式的标注实体具有不同的特殊的参数,即同一样式的标注可以具有某些个别不同的参数。出现上述情况的原因有两种:一、标注式样对话框中,选择一个标注样式(如XXX),点取替代按钮,这时标注样式显示-...

    753条评论 5890人喜欢 5680次阅读 216人点赞
  • 师昌绪是谁

    auto CAD 绘图技巧: AutoCAD 使用过程中的问题,经验与技巧绘 图  问:开始绘图要做哪些准备?  答:磨刀不误砍柴工。计算机绘图跟手工画图一样,也要做些必要的准备。如设置图层、线型、标注样式、目标捕捉、单位格式、图形界限等。很多重...

    286条评论 1969人喜欢 1036次阅读 887人点赞
  • fm哪个软件

    cad标注文字大小如何改?: ...

    299条评论 2591人喜欢 4971次阅读 902人点赞
  • 0123能组成几个四位数

    如何快速熟悉CAD操作: AutoCAD 经验与技巧问:开始绘图要做哪些准备? 答:磨刀不误砍柴工。计算机绘图跟手工画图一样,也要做些必要的准备。如设置图层、线型、标注样式、目标捕捉、单位格式、图形界限等。很多重复性的工作则可以在模板图如AC...

    269条评论 5346人喜欢 5629次阅读 570人点赞