游客 Signup | Login
中文 | En

2165 - 计算分数序列的和(II)

通过次数

0

提交次数

0

Time Limit : 1 秒 Memory Limit : 128 MB

有一个分数序列: ,求出这个数列的前N项之和.

Input

有多行数据,每行数据只有一个正整数N(N<30),结果保留两位小数(四舍五入)。

Output

输出N所对应的分数序列之和,每个输出占一行。

Examples

Input Format

5
8

Output Format

8.39
13.24

Solution C

#include<stdio.h>
int main(){
int N;
while(scanf("%d",&N)!=EOF){
    double z=2.0,m=1.0,t;
    int i;
    double sum=0.0;
    for(i=1;i<=N;i++){
        sum=sum+z/m;
        t=z;
        z=z+m;
        m=t;
        }
    printf("%.2f\n",sum);
}
return 0;
}

Solution C++

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	int n;
	double sum;
	double F1, F2, F;
	while (cin>>n)
	{
		F1 = 1;
		F2 = 2;
		sum = F2/F1;
		
		for (int i=2; i<=n; i++)
		{
			F = F1;
			F1 = F2;
			F2 = F1 + F;
			sum += F2/F1;
		}
		cout <<setprecision(2) <<std::fixed<< sum<<endl;
	}
	return 0;
}

Solution Java

import java.util.Scanner;
public class Main{
  public static void main(String[] args){
  	Scanner input = new Scanner(System.in);
    while(input.hasNextInt()){
    	int N = input.nextInt();
      	int x,a = 1,b = 2;
      double sum = 0;
      for(x = 1;x <= N; x++){
		sum = sum + ((double)b / a);
        int y = a;
          a = b;
        b = b + y;
      }
      String he = String.format("%.2f",sum);
      System.out.println(he);
    }
  }
}