c++ - C+中如何实现高效累加?
天蓬老师
天蓬老师 2017-04-17 13:31:55
[C++讨论组]

蓝桥杯有这么一道题:
问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。

注意事项:
说明:请注意这里的数据规模。

本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。

如果不用for循环累加的话,还有其他什么更高效的累加方法吗?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(6)
巴扎黑

1 + 2 + 3 + ... + n = n * (n + 1) / 2

时间复杂度O(1).

PHP中文网

楼上正解呀,我觉得这个题主要考察:自己构造一个数据类型(大整数),然后实现其四则运算吧,因为从题目看来显然其值超过了一般整型能够表示的范围。

怪我咯

这个不是编程方法的问题了,这个是你的解题方法的问题了。

黄舟

如果得出的数据太大可以用数组保留每一位数字再输出

ringa_lee

等差数列求和的问题啊!!!你要考虑的是怎样快速计算 n*(n+1)/2。抛砖引玉,比如除以二你可以采用位移来加速。

高洛峰

看到编程题目的时候,很多时候都容易从计算机思维里考虑问题,但是像这种纯计算的问题,从数学思维考虑,应该可以获得更加简洁的回答。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号