题解 | #规律数列求和#

规律数列求和

http://www.nowcoder.com/practice/e05d1c142b3d4898be7183289a00ce5f

题目的主要信息:

  • 有数列为:9,99,999,...,9999999999(10个9)
  • 求这个数列的和

具体做法:

该数列第一个数为a1=9a_1=9,后续递推公式为ai=ai110+9a_i=a_{i-1} * 10 + 9,其中1<i<111<i<11

有了递推公式,我们可以从9开始,循环10次,每次累加结果,并根据累加公式求出下一个元素的值。

为了防止累加和越界,我们最好使用long long。 alt

#include <iostream>
using namespace std;

int main() {
    long long output = 0;
    long long base = 9; //以9为基数
    for(int i = 0; i < 10; i++){ //一共十个数字
        output += base; //累加数列
        base = base * 10 + 9; //当前数列乘10加9就是下一个数列
    }
    cout << output << endl;
	return 0;
}

复杂度分析:

  • 时间复杂度:O(1)O(1),10次循环,常数级别
  • 空间复杂度:O(1)O(1),无额外空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

03-23 23:00
黄淮学院 Java
才浅Caiq:老家县城送外卖也5000,要求别这么低
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务