设计一个算法,计算数列2-4+6-8+10……±m的∑值并返回,要求时间复杂度为O(1).

设计一个算法,计算数列2-4+6-8+10……±m的∑值并返回,要求时间复杂度为O(1).

题目
设计一个算法,计算数列2-4+6-8+10……±m的∑值并返回,要求时间复杂度为O(1).
设计一个算法,计算数列2-4+6-8+10……±m的∑值并返回,该数列存放在一个整型数组中.要求时间复杂度为O(1).
谢大神解答!
答案
如果一共有n个数,首先判断n奇偶性;
如果n是偶数,那么两两一组,每一组的和是-2(2-4,6-8,.),
这样前n个数的和就是 -2*(n/2) ;
如果n是奇数,n-1就是偶数,那么前n-1个数有 (n-1)/2 组,
由上述讨论可知,前n-1个数的和是:-2*((n-1)/2);
而最后一个数(也就是第n个数)是正的,即 2n ,
这样前n个数的和就是:-2*((n-1)/2)+2n
这个算法的结果只要计算一个值:-2*(n/2) 或 -2*((n-1)/2)+2n ,时间复杂度当然就是是O(1);
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
热门考点

超级试练试题库

© 2017-2019 超级试练试题库,All Rights Reserved.