链接:https://ac.nowcoder.com/acm/contest/47124/1008
来源:牛客网
牛牛准备继续进阶,计算更难的数列
输入一个整数 n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1)) 的值
输入一个整数
输出一个浮点数,保留 3 位小数
1
1.000
考虑分母部分
1
1-3
1-3+5
...
分母是数组 an=2n−1a_n = 2n - 1an=2n−1 的和,而且偶数项为负,奇数项为正
内循环把分母求出来,即可得出某一项的值,然后外循环再对每一项进行求和
#include int main()
{int n = 0, item = 0;double sum = 0;scanf("%d", &n);//外循环,项求和for (int i = 1; i <= n; i++){item = 0;//内循环,求分母for (int j = 1; j <= i; j++)item += (j % 2 == 0 ? -1 : 1) * (2 * j - 1);//计算该项的值并加到和里面去sum += 1.0 / item;}printf("%.3lf\n", sum);return 0;
}
如果你输出一下每一项分母的值,就会发现
1
-2
3
-4
5
分母其实就是 i 的正负交替而已…
那我为什么还要用循环去算?
//......for(int i = 1; i <= n; i++)
{sum += 1.0 / (i % 2 == 0 ? -i : i); //一行足矣
}//......
上一篇:罗马诺:霍芬海姆即将和德国U17国脚莫尔施泰特签下新合同 德国足球联赛霍芬海姆 罗马诺宣布加盟霍芬海姆
下一篇:亚冠-C罗里程碑之战收获亚冠淘汰赛首球 利雅得胜利1-0费哈占先机 亚冠c罗首秀 c罗里程碑之战利雅得胜利4-1取胜