1!+2!+3!+4!+..........

4122人阅读
本文的内容本身来自一个名校计算机生的一次面试经历,呵呵,没错,你猜对了,肯定 不是我
个人很喜欢这两道题,可能题目原本不止两道,当然,我这里这分析我很喜欢的两道。
1.写一个函数计算当参数为n(n很大)时的&#2+3-4+5-6+7......+n
当我看了面试经过后,我觉得很有代表性,于是,我就拿着这个题目去问我的一些同学,我想看看大家拿到这个题目的第一实现方式。大家给我的反应也在意料之中,说是直接写个for循环。自此,大家都犯了一个程序员最爱犯的错误,那就是把所有的工作都交给cpu去做。或许大家会说,现在的计算机,运行速度那么快,根本不用考虑执行这种程序给cpu带来的效率问题。对于这个问题,我们下面在讨论。
看这位名校生第一次给出的答案:
long fn(long n)
long temp=0;
int i,flag=1;
printf(&error: n must & 0);
for(i=1;i&=n;i++)
temp=temp+flag*i;
flag=(-1)*
此答案面试官并不满意,后来他又给出了第二个答案:
long fn(long n)
long temp=0;
int j=1,i=1,flag=1;
printf(&error: n must & 0);
while(j&=n)
temp=temp+i;
i&0?i++:i--;
我个人觉得对于一个刚毕业的大四面试者来说,已经很不容易,当然肯定有人能做的比这些更好,他把原代码中用乘除的地方换成了加减法,我们知道计算机做加减比做乘除效率更高,因为很多计算机乘除会最终转换成加减法来做。
面试官仍不满意,但此时这名大四面试着着急之下想不到最佳方案了。只能求最优答案。
long fn(long n)
printf(&error: n must & 0);
if(0==n%2)
return (n/2)*(-1);
return (n/2)*(-1)+n;
呵呵,我也很惊奇,的确,在n很大的时候,此算法不知要比上面的两种算法强多少倍。
这就是为什么上面提到的,程序员不能把所有的工作都丢给计算机,计算机的cpu是给用户用的,而不是给程序员用的。
&不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说 什么了!
上面的算法我觉得已经很优了,但是我的一个同学给出了在上面算法的基础上我认为更优的方法。
long fn(long n)
printf(&error: n must & 0);
if(0==n%2)
return (n&&1)*(-1);
return (n&&1)*(-1)+n;
我们知道加减法效率比乘除的效率高,而移位运算在大多数情况下也是比加减的效率更高。
2.用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:
fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!
fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!
现在用一个函数fn(int n,int flag)实现,当flag为0时 ,实现fn1功能,如果flag为1时实现fn2功能!要求还是效率,效率,效率!
给出的答案是:
定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5! ,6! ,7!,8!,9!]然后给出一个循环:
for(i=0;i&6;i++)
& temp=temp+n/t[flag][i];
呵呵,是不是很巧妙?典型的空间换时间的算法!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:141617次
积分:1916
积分:1916
排名:第14461名
原创:44篇
转载:24篇
评论:27条
(1)(2)(1)(1)(1)(2)(1)(4)(3)(2)(1)(2)(1)(6)(2)(7)(7)(13)(7)(6)1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+...+1/(9*10*11)简便运算_百度知道
1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+...+1/(9*10*11)简便运算
请数学好的人帮帮忙,谢谢!
提问者采纳
+1&#47.;(1×2)-1&#47..;2×[1/(3*4*5)+:1/(2*3*4)+1/(2×3)+1&#471/(10×11)]=1/(1*2*3)+1&#47.+1/(10×11)]=1/2[1/2×54/(9×10)-1/110)=1/2[1/(2×3)-1/n(n+1)(n+2)=1/2×(1/110 公式;(1×2)-1&#47,请点击[满意答案];(n+1)(n+2)] 明教为您解答;(3×4)+;如若您有不满意之处;2-1&#47!祝您学业进步,我一定改正;(9*10*11)=1/n(n+1)-1&#47,如若满意,请指出!希望还您一个正确答复.;110=27&#47
提问者评价
来自团队:
其他类似问题
为您推荐:
其他2条回答
;[4(n+1)(n+2)]1/(n+2)-1/2){1/(2*3*4)=(1/3-1/(n+2)]
=(1/2)[(1/(n+1))]∴1/(1*2*3)=(1/5-1&#47.;3-1&#47.∵1/2)[(1&#47..4-1/2)[1/(n+1))+(1&#47...;2-1/(n+2)-1/(3*4*5)+;3)]
1&#47..+1&#47.;[2(n+1)(n+2)]
=n(n+3)&#47..;2)[(1-1/3)+(1&#47.;2)]
=(1/2-1/[(n+1)(n+2)]}
=(1/1*2*3+1&#47.;4)]2)[(1-1/(3*4*5)=(1&#47..+1/(n+1))+(1/2)n(n+3)/[n*(n+1)*(n+2)]=(1/(2*3*4)+1&#47.
1/[4(9+1)(9+2)]=108/4)+(1&#47.;2)[(1/n*(n+1)*(n+2)
=(1&#47...;3*4*5+;(n+1)+1/(9*10*11)=9*(9+3)/2-1&#47..;2)+(1/440=27/2*3*4+1/(1*2*3)+1/2)]
应该是用裂项做的吧!
简便运算的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前位置:
>>>算式1!+2!+3!+4!+5!+6!+…+2012!的计算结果除以1001的余数是_____..
算式1!+2!+3!+4!+5!+6!+…+2012!的计算结果除以1001的余数是______.
题型:填空题难度:偏易来源:不详
×13,因为所有大于10!都可以分解为7×11×13×(x)所以这些数的和的余数都是0.然后这个算式就变成了:算式1!+2!+3!+…+9!除以1001的余数,求余数(1+2+6+24+120+720++362880)÷1001,由于是求余数,所以大于1001的部分直接舍去不要,化简(1+2+6+24+120+720+35+280+518)÷÷5.所以余数为705.故答案为:705.
马上分享给同学
据魔方格专家权威分析,试题“算式1!+2!+3!+4!+5!+6!+…+2012!的计算结果除以1001的余数是_____..”主要考查你对&&有余数的除法&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
有余数的除法
有余数的除法竖式:思路点拨:1、有余数的除法中,余数比除数小。2、被除数÷除数=商……余数 &&&&& 被除数=商×除数+余数 &&&&& 除数=(被除数-余数)÷商 &&&&& 商=(被除数-余数)÷除数
发现相似题
与“算式1!+2!+3!+4!+5!+6!+…+2012!的计算结果除以1001的余数是_____..”考查相似的试题有:
59518347799684451051287581584954977更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
1+2+3+4+5+···=-1÷12??!
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
1+2+3+4+5+···=-1÷12??!
播放量数据:
你可能还想订阅他们:
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制

我要回帖

 

随机推荐