题目的主要信息:
- 有数列为:9,99,999,...,9999999999(10个9)
- 用循环的方式求这个数列的和
具体做法:
该数列第一个数为a1=9,后续递推公式为ai=ai−1∗10+9,其中1<i<11。
有了递推公式,我们可以从9开始,循环10次,每次累加结果,并根据累加公式求出下一个元素的值。
为了防止累加和越界,我们最好使用long而非int。
public class Main {
public static void main(String[] args) {
long sum = 0;
long base = 9; //以9为基数
for(int i = 0; i < 10; i++){ //一共十个数字
sum += base; //累加数列
base = base * 10 + 9; //当前数列乘10加9就是下一个数列
}
System.out.println(sum);
}
}
复杂度分析:
- 时间复杂度:O(1),10次循环,常数级别
- 空间复杂度:O(1),无额外空间