一、题目链接
http://noi.openjudge.cn/ch0105/32/
二、解题思路
◎ 定义并输入int类型的整数n,代表分数序列的长度;
◎ 定义三个int类型的整数p、q、t,分别代表分母、分子、暂存变量,初始时p为1、q为2;
◎ 定义double类型的浮点数ans,代表分数序列之和,初始时ans为0;
◎ 从第一项开始,到最后一项为止,利用循环i处理如下:
→ 首先,令ans = ans + 1.0 * q / p,也即将当前项累加到和上;
→ 其次,令t = q,也即将当前项的分子暂存在t中;
→ 然后,令q = q + p,也即更新下一项的分子;
→ 最后,令p = t,也即更新下一项的分母;
循环i结束后,ans中存储了分数序列之和;
◎ 保留4位小数输出ans。
三、Java程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int p = 1;
int q = 2;
int t;
double ans = 0;
for (int i = 1; i <= n; i++) {
ans = ans + 1.0 * q / p;
t = q;
q = q + p;
p = t;
}
System.out.printf("%.4f", ans);
}
}
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int p = 1;
int q = 2;
int t;
double ans = 0;
for (int i = 1; i <= n; i++)
{
ans = ans + 1.0 * q / p;
t = q;
q = q + p;
p = t;
}
printf("%.4f", ans);
return 0;
}