【题目描述】
编写程序,输入n的值,求11−12+13−14+15−16+17−18+...+(−1)n−1⋅1n的值。
【输入】
输入一个正整数n。(1<=n<=1000)
【输出】
输出一个实数,为表达式的值,保留到小数点后四位。
【输入样例】
2
【输出样例】
0.5000
【题解代码】
解法一:在前面交替乘正负1
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double ans = 0;
int s = 1;
for (int i = 1; i <= n; i++)
{
ans += s * (1.0 / i);
s *= -1;
}
printf("%.4lf", ans);
return 0;
}
解法二:根据公式,利用幂函数
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
double ans = 0;
int s = 1;
for (int i = 1; i <= n; i++)
{
ans += pow(-1, i - 1) * (1.0 / i);
}
printf("%.4lf", ans);
return 0;
}