给定一个正整数,计算1-1/2+1/4-1/8+1/16……的前n项之和。 输入要求 输入一个正整数n。 输出要求 输出前n项之和,保留2位小数。
时间: 2024-03-30 10:25:21 浏览: 97
C语言程序设计-计算并输出给定整数n的所有因子之和(不包括1与自身);注意:n的值不大于1000.c
5星 · 资源好评率100%
算法1:暴力枚举
按照题目要求模拟计算即可。
时间复杂度:$O(n)$
C++ 代码
class Solution {
public:
double calculate(int n) {
double sum = 1.0;
double part = 1.0;
for(int i=2;i<=n;i++){
part = part / 2;
sum = sum + part;
}
return sum;
}
};
算法2:数学公式
根据等比数列的求和公式,$\sum\limits_{i=0}^{n}a^i=\frac{1-a^{n+1}}{1-a}$。
因此,原式可以写成$1-\frac{1}{2}+\frac{1}{4}-\frac{1}{8}+\frac{1}{16}-\frac{1}{32}+...=\sum\limits_{i=0}^{\infty}(-\frac{1}{2})^i=\frac{1}{1-(-\frac{1}{2})}=\frac{2}{3}$。
时间复杂度:$O(1)$
C++ 代码
class Solution {
public:
double calculate(int n) {
return 2.0 / 3.0;
}
};
阅读全文