2174 - 计算分数序列的和(I)

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

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

题目输入

有多行数据,每行数据只有一个正整数N(N<=100),结果保留两位小数。

题目输出

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

输入/输出样例

输入格式

5
8

输出格式

7.28
10.72

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+1;
        m=t;
        }
    printf("%.2f\n",sum);
}
return 0;
}

C++解答

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

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

Java解答

public class Main 
    {
            public static void main(String[] args)
            {
              java.util.Scanner input = new java.util.Scanner(System.in);
              
              do {
                int n = input.nextInt();
                double sum = 0;
                int n1 = 2;
                int n2 = 1;
                for (int i = 0;i < n;i++) {
                  sum += n1*1.0/n2;
                  
                  n1++; 
                  n2++;
                }
                long b = Math.round(sum*100);
                  double c = b/100.0;
                
                System.out.printf("%4.2f",sum);
                System.out.print("\n");
              }
              while (input.hasNextInt()==true);
            }
}