社区
J2ME
帖子详情
求100!中的0的个数?
Yuboo_J
2009-02-18 12:53:50
今天是实习的第二天,老师在讲到循环的时候问了我们一个问题.100!中含有几个0?
中午时间,我仔细想了一下,认为只要求出有多少个5的倍数就能知道答案,可却忽略了数与树之间的加法也能得出0.
我至今仍未想出合理的方法来解决这个问题?
请问有谁能给出一个合理的算法!
谢谢!
...全文
340
26
打赏
收藏
求100!中的0的个数?
今天是实习的第二天,老师在讲到循环的时候问了我们一个问题.100!中含有几个0? 中午时间,我仔细想了一下,认为只要求出有多少个5的倍数就能知道答案,可却忽略了数与树之间的加法也能得出0. 我至今仍未想出合理的方法来解决这个问题? 请问有谁能给出一个合理的算法! 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gbjgg
2009-04-10
打赏
举报
回复
ding
lili830209
2009-04-10
打赏
举报
回复
ding
Lonely_Tree
2009-04-10
打赏
举报
回复
[Quote=引用 20 楼 Lonely_Tree 的回复:]
这个主要是计算100!包含5的因子的个数和2的个数。
,然而2的个数显然要大于5的个数,所以只关注5的个
数然后100!中有多少个5的因子,那么就需要数论的
知识了。好像是[100/5]+[100/5^2];
即为答案,具体可以查看数论资料!
[/Quote]
public class MyClass{
public static void main(String[]args){
int data = 100; //求data阶乘末尾包含多少个0.
int i = 5 ;
int count = 0;
while(data/i!=0) {
count+=(data/i);
i*=i;
}
System.out.println(data+"阶乘末尾0个数是:"+ count);
}
}
jichangh1983
2009-04-08
打赏
举报
回复
学习了
kanwangzjm
2009-04-08
打赏
举报
回复
非常高效的代码 可以计算到1000!
int data[20000];
int num;//阶乘大小
int digit;//每次阶乘得出结果的位数
while(1){
scanf("%d",&num);if(num<0) break;digit=1;memset(data,0,sizeof(data));
data[0]=1;data[1]=1;
for(int i=1;i<=num;i++)
{
for(int j=1;j<=digit;j++)//先做每一位与i的乘积放在一个数组空间中
{data[j]*=i;}
for( j=1;j<=digit;j++)//调整个元素的值,使之在0--9之间
{if(data[j]>9)
{for(int k=1;k<=digit;k++){
if(data[digit]>9) //位数增加
{digit++;}
data[k+1]+=data[k]/10;//调整
data[k]%=10;}}}}
for(int j=digit;j>0;j--)
{printf("%d",data[j]);}
zmjsg
2009-04-05
打赏
举报
回复
顶。。。
Lonely_Tree
2009-04-04
打赏
举报
回复
这个主要是计算100!包含5的因子的个数和2的个数。
,然而2的个数显然要大于5的个数,所以只关注5的个
数然后100!中有多少个5的因子,那么就需要数论的
知识了。好像是[100/5]+[100/5^2];
即为答案,具体可以查看数论资料!
yesvery
2009-03-02
打赏
举报
回复
不会使用BigInteger类型,否则程序会更简单。
还望高手指教
yesvery
2009-03-02
打赏
举报
回复
不好意思,进位处理中有bug,应该把两条语句的前后位置对调以下
for(int i=0;i <149;i++){ //进位处理
b[i+1]=b[i+1]+b[i]/10;
b[i]=b[i]%10;
}
另外,各数组扩展为160个元素因为最终结果是158位
0093326215443944152681699238856266700490
7159682643816214685929638952175999932299
1560894146397615651828625369792082722375
8251185210916864000000000000000000000000
前2个零不算,中间6个零,末尾24个零,共30个零
Sodino
2009-03-02
打赏
举报
回复
老紫竹博客有解
http://blog.csdn.net/java2000_net/archive/2009/02/19/3910401.aspx
yesvery
2009-03-01
打赏
举报
回复
10楼说的有道理,根据5的个数只能求出尾部0的个数,中间的0没做考虑。
看来,只有参照亚日说的,利用字符串直接计算。
不过,需要自己编制字符乘法的九九表,编制带进位的字符加法。
heibing578604041
2009-03-01
打赏
举报
回复
位运算就好了
superAfx
2009-03-01
打赏
举报
回复
有这么复杂么?100!是100的阶乘,貌似没有加法的
counter = 0;
for (i = 1 i <=100; i++)
{
n = i;// 当前数字有几个5的因子,有一个多一个零
while (n % 5 == 0)
{
counter ++;
n /= 5;
}
}
循环结束后,自己打印counter :)
yesvery
2009-03-01
打赏
举报
回复
public class aa {
static int[] a=new int[150];
static int[] b=new int[150];
static int[] c=new int[150];
public static void main(String[] arg){
int f=100;
for(int i=0;i<150;i++){
a[i]=0;
b[i]=0;
}
factorial(f);
for(int i=149;i>-1;i--) System.out.print(a[i]); 由高至低把各位打印出来
}
public static void factorial(int d){ //阶乘的方法
int e;
a[0]=1;
for(int k=1;k<=d;k++){
for(int i=0;i<150;i++){ //a数组的各元素与k相乘,结果放入数组b的相应元素中
e=a[i]*k;
if(e>=100){
b[i+2]=b[i+2]+e/100;
e=e%100;
}
if(e>=10){
b[i+1]=b[i+1]+e/10;
e=e%10;
}
b[i]=b[i]+e;
}
for(int i=0;i<149;i++){ //进位处理
b[i]=b[i]%10;
b[i+1]=b[i+1]+b[i]/10;
}
c=a; //利用c 进行a,b的交换
a=b;
b=c;
for(int i=0;i<150;i++) b[i]=0; //b数组清零
}
}
}
利用150个元素的数组,求出的答案如下:
000478250885038094923057851198
075878590702874186511249894093
290412323234811438398100663612
104680322341562443547956896035
479888000000000000000000000000
10!共147位,前3个零不算,中间14个零,末尾24个零,共38个零
Ahh_Freshmeat
2009-03-01
打赏
举报
回复
mark
wanghuadong
2009-02-25
打赏
举报
回复
mark一下,等会过来看答案
chunfengd
2009-02-24
打赏
举报
回复
找5的倍数是不对的吧.
比如7!=5040, 里面只有一个5, 但有2个0.
yesvery
2009-02-23
打赏
举报
回复
枚举:5,10,15,20,25(两个5),30,35,40,45,50(两个5),55,60,65,70,75(两个5),80,85,90,100(两个5)。
的确是24个。
oo
2009-02-23
打赏
举报
回复
100/5 + 100/(5*5) = 24
oo
2009-02-23
打赏
举报
回复
应该计算5的因子的个数,比如25=5*5应该算2个
加载更多回复(6)
基于ArcGIS的Arcpy编程(通俗易懂)
1、python基础篇 PyCharm
中
集成Arcpy环境 Python
中
变量及字符串介绍 列表介绍 元组的介绍 if...else条件判断 for循环判断 函数的定义 2、arcpy基础篇 查询游标arcpy.da.SearchCursor 更新游标arcpy.da....
100!
求
结果末尾0的
个数
分析 末尾想要产生0,那么必然两
个数
相乘为0,比如2*5,4*5,6*5。。。总之一定要有5,每个2, 5对就能形成一个末尾0,解决这个问题就... 例如, 100/5 = 20, 20/5 = 4, 4/5 = 0, 则 1 到 100
中
因子 5 的
个数
为 (20 + 4
python计算n阶乘
中
尾部零的
个数
_计算阶乘n!末尾0的
个数
末尾所含有“0”的
个数
。例如:5!=120,其末尾所含有的“0”的
个数
为1;10!= 3628800,其末尾所含有的“0”的
个数
为2;20!= 2432902008176640000,其末尾所含有的“0”的
个数
为4。二、算法分析此类问题很显然属于...
求
N!末尾的0的
个数
(找规律+递归)
0\'s Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 计算整数n!(n的阶乘)末尾有多少个0。 输入 第一行输入一
个数
T代表测试数据
个数
(T 输出 对于每个测试数据输n!末尾有多少个0,...
求
N!后面有多少个0
中
末尾0的
个数
。 Input 输入有若干行。第一行上有一个整数m,指明接下来的数字的
个数
。然后是m行,每一行包含一个确定的正整数n,1<=n<=1000000000。 Output 对输入行
中
的每一
个数
据n,输出一行,其内容是n!...
J2ME
13,100
社区成员
26,495
社区内容
发帖
与我相关
我的任务
J2ME
Java J2ME
复制链接
扫一扫
分享
社区描述
Java J2ME
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章