实时搜索: 10000的阶乘后面几个零

10000的阶乘后面几个零

913条评论 1818人喜欢 3734次阅读 486人点赞
#include <stdio.h>
void main()
{
int i,a=1;
for (i=1;i<=10;i++)
a=a*i;
if(a>10000)
{
break;
}
printf("%d,%d\n",a,i);
}
为什么会显示break不合法呢?最好有详细说明,谢谢啦 , oj上9分,不知道错哪了。
#include<cstdio>
#include<iostream>
#inclu...

10000的阶乘有多大:

以下是lua4的对数方法估算程序:


结果为:

C语言 输出1~10中阶乘值小于10000的所有数和它的阶乘。(用break语句): #include <stdio.h>
void main()
{
int i,a=1;
for (i=1;i<=10;i++)
{  //这里加上括号,break用在循环中的
a=a*i;
if(a>10000)
{
break;
}
}  //还有这里
printf("%d,%d\n",a,i);
}

求10000以内n的阶乘: 没有特殊的方法,按通常方法编程肯定出错,所有编译器定义的整数数据类型不可能容纳下如此大的数据,所以必须有特殊的方法来计算、存储所得结果,很可能问题是比较复杂的。

10000的阶乘是多少?: 小伙,坑人玩呢?
100的阶乘就是158位数了

pascal求10000以内n的阶乘?: 目前几乎没有算法实现10000阶乘
201错误是数值溢出
integer的范围是-32767..32767,用作阶乘是远远不够的
简单递归只能算到12的阶乘:
Program jiecheng ;
var s,n:longint;
function fac(n:integer):LONGINT;
var
k,t:integer;
begin
t:=1k:=2 to n do
t:=t*k;
fac:=t;
end;
begin
writeln('Input n: ');
read(n);
WHILE N>12 DO BEGIN
WRITELN('Error!);
READLN(N);
END//这一段可在输入超范围数时报错,输入范围内的数再继续
s:=fac(n);
write('s=',s);
end.
还有一个高精度阶乘的程序(大约可算到5000)
program HighPrecisionFactorial;
var hd:array[1..10000] of word;
a,i,j,k,c,t:integer;
fo:text;
St:STRING;
begin
c:=10;
readln(a);
hd[1]:=1;
k:=1;
for i:=2 to a do begin
t:=0;
j:=1;
repeat
hd[j]:=hd[j]*i;
hd[j]:=hd[j]+t;
t:=0;
if hd[j]>=c then begin
t:=hd[j] div c;
hd[j]:=hd[j] mod c;
if j=k then k:=j+1;
end;
inc(j);
until j>k;
end;
writeln(a,'!=');
for i:=k downto 1 do write(hd[i]);
end.

如何用C语言求10000的阶乘?: #include"stdio.h"
#include"string.h"
#include<stdlib.h>
int main()
{
char n[10];
int a[20000]={0},b[20000]={0},c[20000]={0},temp;
int i,j,k,len;
printf("请输入阶乘数:");
scanf("%s",&n);
/*下面以b为乘数,a为被乘数(依次从1到n递增)*/
temp=atoi(n);/*化整*/
b[0]=1;/*初始化b,求阶乘从1开始*/
len=1;/*初始化b的长度*/
for(i=1;i<=temp;i++)/*阶乘从低往高乘*/
{
sprintf(n,"%d",i);/*将阶乘项转换为字符串*/
for(j=strlen(n)-1;j>=0;j--)/*逆向存储阶乘项(串)*/
a[strlen(n)-1-j]=n[j]-'0';/*注意要变成整数才能进行相乘*/
for(j=0;j<len;j++)/*取b的所有位*/
for(k=0;k<strlen(n);k++)/*取阶乘项的每一位*/
{
c[j+k]+=b[j]*a[k];/*用c来存储每一位相乘的结果*/
c[j+1+k]+=c[j+k]/10;/*若c[j+k]不小于10,则将大于10的部分送至高位*/
c[j+k]%=10;/*送至高位后,c[j+k]应作相应的求余运算。只保留剩余部分*/ }
if(c[j+k-1]!=0)/*判断新的b数的位数长度*/
len=j+k;
else
len=j+k-1;
for(j=0;j<len;j++)/*将b更新*/
b[j]=c[j];
memset(c,0,sizeof(c));/*将c归零*/
}
for(i=len-1;i>=0;i--)/*逆向输出结果*/
printf("%d",b[i]);
printf("\n");
return 0;
}

C语言设计一个程序求大数的阶乘,如10000的阶乘: 写的一个C++实现10000的阶乘的代码
#include<iostream>
#define N 10000//设阶乘数为10000
#define SIZE 40000//预留40000位保存结果
using namespace std;
void mul(int *n1,int n2)//两数相乘
{
for(int i=0;i!=SIZE;++i)
n1[i]*=n2;
for(int i=0;i!=SIZE;++i){
n1[i+1]+=(n1[i]/10);
n1[i]%=10;
}
}
int main()
{
int *num=new int[SIZE];
memset(num,0,SIZE);
num[0]=1;
//N的阶乘
for(int i=1;i!=N+1;++i){
mul(num,i);
}
//输出时排除开头的0
for(int i=SIZE-1;i!=-1;--i){
if(0!=num[i]){
for(int j=i;j!=-1;--j){
cout <<num[j];
}
break;
}
}
delete[] num;
return 0;
}
很多地方不合理,尤其是需要预留空间,这就要我先预算一下会有多少位了。运算时间20秒左右,效率也不行,应该在10秒左右比较合理,机器为P3 733,内存256MB。

计算多项式1!+2!+3!+.......+n!当和超过10000时输出累加及n的值: //对多项式1+2+4+8+16+32+...求和,总和最接近但不能超过10000.求此时累加的多项式项数,以及累积的总和//
#include<stdio.h>
int main(void)
{
int i,sum=0;
for(i=1;sum<10000;i++)
sum+=i;
sum-=--i;
i--;
printf("1+2+...+%d=%d\n",i,sum); //i为累加到多少的多项式项数,sum为累加的总和
return 0;
}
我这个是不超过10000的,你可以根据来改下。
望采纳!!!

  • me525刷机可以刷到多少

    玩英雄联盟有时候玩到20几分钟屏幕突然卡住 ,音响发出嗡嗡声是怎么回: 电脑问题或网络问题 ...

    939条评论 4903人喜欢 2078次阅读 446人点赞
  • ntp服务器得安装几个

    谁知道坐汽车从无为到天津要多少钱?拜托各位了 3Q: 2013年春节400 现在估计350 2012年春节450 平常350以上都是卧铺. 查看原帖>> ...

    956条评论 3285人喜欢 2776次阅读 888人点赞
  • 100平的房子装修要多少钱

    一台学步车要多少钱拜托各位了 3Q: 89块左右啊 ...

    587条评论 6368人喜欢 4038次阅读 703人点赞