- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 49
2014程序设计竞赛培训题解答(1)
1. 统计n! 尾部零
试统计正整数n的阶乘n!=1×2×3×…×n尾部连续零的个数。
数据检测:n=2015;n解:以下试用两种不同的算法分别进行求解。
(1) 基本求积算法
1) 算法概要
注意到输入整数n规模可能较大,n! 尾部零的个数也就相应地多,设计a数组存储n!的各位数字,a[1]存储个位数字,a[2]存储十位数字,余类推。
试模拟整数竖式乘运算实施精确计算(详见第8章)。
首先通过常用对数累加和s=lg2+lg3+…+lgn确定n!的位数m=s+1,即a数组元素的个数。
设置2重循环,模拟整数竖式乘法实施各数组元素的累乘:
乘数k:k=2,3,…,n;
累乘积各位a[j]:j=1,2,…,m;
实施乘运算:
t=a[j]*k+g; // 第j位乘k,g为进位数
a[j]=t%10; // 乘积t的个位数字存于本元素
g=t/10; // 乘积t的十位以上数字作为进位数
尾部连续零的个数统计: 从j=1时低位a[j]开始,a[j]=0时j++;作统计,直到a[j]!=0时结束。
2) 算法描述
// 计算n!(n10000)尾部零个数,c134
#include stdio.h
#include math.h
void main()
{ int j,k,m,n,a[40000];
long g,t;double s;
printf( 请输入正整数n(n10000): );
scanf(%d,n); // 输入n
s=0;
for(k=2;k=n;k++)
s+=log10(k); // 对数累加确定n!的位数m
m=(int)s+1;
for(k=1;k=m;k++) a[k]=0; // 数组清零
a[1]=1;g=0;
for(k=2;k=n;k++)
for(j=1;j=m;j++)
{ t=a[j]*k+g; // 数组累乘并进位
a[j]=t%10;
g=t/10;
}
j=1;
while(a[j]==0) j++;
printf( %d! 尾部连续零共%d个。\n,n,j-1); // 输出n! 尾部零个数
}
(2) 统计“5”因子设计
1) 设计思路
注意到n! 尾部连续零是n!中各相乘数2,3,…,n中“2”的因子与“5”的因子相乘所得,一个“2”的因子与一个“5”的因子得一个尾部“0”。
显然,n!中各个相乘数2,3,…,n中“2”的因子数远多于“5”的因子数,因而n! 尾部连续零的个数完全由n!中各个相乘数2,3,…,n中的“5”因子个数决定。
设n!中各个相乘数2,3,…,n中“5”的因子个数为s,显然有
其中[x]为不大于x的最大正整数,正整数m满足。
这里统计s只需设计一个简单的条件循环即可实现。
2) 算法描述
// 统计“5”因子设计,c135
#include stdio.h
void main()
{ long n,s,t;
printf( 请输入正整数n: );
scanf(%ld,n); // 输入n
s=0;t=1;
while(t=n)
{t=t*5;s=s+n/t;} // 循环统计尾部连续0的个数
printf( %ld! 尾部连续零共%ld个。\n,n,s); // 输出结果
}
(3) 数据检测与复杂度分析
请输入正整数n: 2015
2015! 尾部连续零共502个。
基本求积算法为双循环设计,循环频数为mn。注意到mn,把m换算为n, m数量级估算平均为n*logn,因而基本求积算法的时间复杂度为O(n2logn),空间复杂度为O(nlogn)。
统计“5”因子的设计大大简化了n! 尾部连续零个数的统计,算法的时间复杂度为O(logn),空间复杂度为O(1),显然大大优于基本求积算法。
统计“5”因子设计可大大拓展n的范围,例如输入n可 尾部连续零共5035500个,这一点基本求积算法因时间复杂度与空间复杂度太高而难以实现。
若案例稍加变通,需求n!结果所有数字中零的个数,基本求积算法(
您可能关注的文档
- 中学物理教学类期刊的介绍和投稿应注意的问题.ppt
- 重力_基本相互作用.ppt
- 重力弹力摩擦力知识汇总与典型例题.doc
- 重庆市地质灾害治理施工质量验收规定.doc
- 主体竣工验收资料全.doc
- 助理猎头顾问培训教材.ppt
- 专利检索、撰写以和答复专项培训课件.ppt
- 专制主义中央集权制度_二轮复习.ppt
- 自我的介绍求职简历通用模板85580.ppt
- 自助餐厨房定位定量标准和要求内容.doc
- 2014届高三年级物理二轮专题复习课件-机械能守恒定律功能关系.ppt
- 2015版急性心肌梗死的指南.ppt
- 2015年山西省高考理科数学试卷和答案.doc
- 2015年上海市黄浦区中考一模(即期末)数学试题和答案.doc
- 2016年围术期高血压管理专家共识.ppt
- 2016年中考英语冲刺之写作(中考书面表达分析和知识点梳理).doc
- 2017年_2018年学年人版高中政治必修一教学课件-第一单元第1课(共131张PPT).ppt
- 2017年版机动车检测站程序文件.doc
- 2017年高二年级地理知识竞赛预赛测试卷.doc
- 2017年高考英语一轮复习学通语法课件-第10讲+动词的时态和语态(新人版).ppt
最近下载
- 2025至2030年中国报废汽车回收拆解行业市场运行现状及投资规划建议报告.docx
- Unit 2 What do you like about your family Period 1 Ready Go & Sound 教学设计 沪教版(2025)二年级英语上册.docx VIP
- 食品添加剂 甲醇钠标准2023年.docx VIP
- 高一语文上学期《乡土中国》-差序格局教学课件.pptx VIP
- 企业安全生产检查标准化表格.doc VIP
- 中成药的临床合理应用试卷含答案.docx
- 《HIV病毒与艾滋病》课件.ppt VIP
- 第二单元第1课《因地制宜》课件-2025-2026学年人教版(2024)八年级上册.pptx VIP
- 高标准农田建设标准NYT2148-2012.pdf VIP
- 世界少年奥林匹克数学竞赛(中国区)选拔赛省级选拔模拟卷(三)三年级试题(含解析)2025年5月夏季.docx VIP
原创力文档


文档评论(0)