Maison  >  Questions et réponses  >  le corps du texte

c++ - C+中如何实现高效累加?

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

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

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

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

天蓬老师天蓬老师2765 Il y a quelques jours629

répondre à tous(6)je répondrai

  • 巴扎黑

    巴扎黑2017-04-17 13:33:55

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

    时间复杂度O(1).

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 13:33:55

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

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 13:33:55

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

    répondre
    0
  • 黄舟

    黄舟2017-04-17 13:33:55

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

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-17 13:33:55

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

    répondre
    0
  • 高洛峰

    高洛峰2017-04-17 13:33:55

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

    répondre
    0
  • Annulerrépondre