一、题目描述
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和
1/m
1/(m 1) ⋯
1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例:
5 10
输出样例:
sum = 355.845635
二、思路分析
博主刚看到题目,感觉有些不理解。多读了几遍,发现一点都没有难度,就是把公式:
1/m
1/(m 1) ⋯
1/n 转化成对应的代码罢了。转化代码如下:
代码语言:javascript复制double sum=0.0;
int i;
for(i=m; i<=n; i )
{
sum =pow(i,2) 1.0/i;
}
其中,pow()为次幂函数,具体解释和使用请看这篇文章:《练习2-6 计算物体自由下落的距离 (5分)》。
需要注意的是,公式中的 m 作为分母,如果在题目中没有说明 m 和 n 是正整数的话,就得保证 m,n 不为0。就像下面这样:
代码语言:javascript复制double sum=0.0;
int i;
for(i=m; i<=n; i )
{
if(i != 0)
{
sum =pow(i,2) 1.0/i;
}
}
当然本题中明确说明 m,n 是正整数,就不需要考虑分母可能会出现0的情况了。
三、参考代码
根据以上分析,给出参考代码如下:
代码语言:javascript复制#include<stdio.h>
#include <math.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
double sum=0.0;
int i;
for(i=m; i<=n; i )
{
sum =pow(i,2) 1.0/i;
}
printf("sum = %.6lfn",sum);
return 0;
}