首页 > 试题广场 >

牛牛学数列3

[编程题]牛牛学数列3
  • 热度指数:17514 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛准备继续进阶,计算更难的数列
输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值

输入描述:
输入一个整数


输出描述:
输出一个浮点数,保留3位小数
示例1

输入

1

输出

1.000
#include<stdio.h>
#include<math.h>    //int abs(int x) 返回x的绝对值
int main()
{
    int n,j,denominator=1;    //分母
    double sum=1;
    scanf("%d",&n);
    if(n==1) printf("1.000");
    else 
    {
        for( j=3 ; j<=(2*n-1) ; j=j+2 )
        {
            denominator=denominator-abs(denominator)/denominator*j;
            sum=sum+1.0/denominator;
        }  
        printf("%.3lf\n",sum);
    }
    return 0;
}

发表于 2022-06-15 09:22:40 回复(0)
#include <stdio.h>
#include <math.h>

int main(){
    int n = 0; double  sum_1, sum = 0.0;
    scanf("%d", &n);
    for(int i = 1; i <= n ; i++){
        sum_1 += pow(-1, i-1) * (2 * i - 1); 
        sum += 1.0 / sum_1;
    }
    printf("%.3lf", sum);
    return 0;
}


发表于 2022-05-24 21:56:30 回复(0)
#include<stdio.h>
#include<math.h>
int main(){
	int n = 0, i = 0;
	int fm = 0;//先计算分目
	double f = 0;//最后的结果用double类型
	scanf("%d", &n);
	for (i = 1; i <= n; i++){
		fm += pow(-1, (i - 1))*(2 * i - 1);//分母是累加的
		f += 1.0 / fm;
	}
	printf("%.3f", f);
	return 0;
}

发表于 2022-04-25 12:11:34 回复(0)
求点个赞
#include<iostream>
#include<iomanip>

using namespace std;

int main()
{
    int n,sum=0,flag=1;
    double sum1=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        sum+=(2*i-1)*flag;
        flag*=-1;
        sum1 +=1.00/sum;
    }
    cout<<fixed<<setprecision(3)<<sum1<<endl;
    return 0;
}

发表于 2022-09-06 23:45:34 回复(0)
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    double flag = 1.0;
    double sum = 0.0;
    for (int i = 1; i <= n; i ++ )
    {
//         cout << sum << endl;
        sum += flag / i;
        flag *= -1.0;
    }
    printf("%.3lf", sum);
}

发表于 2022-02-26 14:18:45 回复(0)
#include <stdio.h>
int main()
{
    int n,y;
    double sum=0,x;
    scanf("%d",&n);
    for(n;n>0;n--)
    {
        x=0;
        for(y=n;y>0;y--)
        {
            x=x+(2*y-1)*pow(-1,y-1);
        }
        sum=sum+1/x;
    }
    printf("%.3lf",sum);
    return 0;
}

发表于 2022-02-25 13:35:47 回复(0)
#include <stdio.h>
//输入一个整数n,计算 1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...((-1)^(n-1))*(2n-1))的值
//1  1-1/3  1-1/3+1/5...1-1/3+1/5-...
int main() {
    int n = 0;
    scanf("%d", &n);
    int tmp = 0;
    double sum = 0;
    int flag=1;
    for (int i = 1; i <= n; i++) {
        tmp += flag * (2 * i - 1);
        sum += 1.0 / tmp;
        flag = -flag;
    }
    printf("%.3lf\n", sum);
    return 0;
}

发表于 2024-02-09 15:45:15 回复(0)
#include <stdio.h>
#include <math.h>
int main() {
    double sum = 0, tempSum = 0;
    int n;
    while (scanf("%d", &n) != EOF) {
        for (int i = 1; i <= n; i++) {
            tempSum += pow((-1), (i - 1)) * (2 * i - 1); // 先把分母求和
            sum += 1.0 / tempSum;
        }
    }
    printf("%.3lf\n", sum);

    return 0;
}
发表于 2023-02-19 15:45:16 回复(0)
#include <stdio.h>
//分析
//分子每次都为一
//分母每次都会+-
int main() 
{
    int n =0;
    int flag = -1;
    int num =0;
    double sum =0;
    scanf("%d", &n);
    int i = 0;
    for(i = 1;i <= n;i++)   //生成n个数
    {
        // int j =0;
        // for(j =1; j<=2*i-1;j+=2)    //分母每次变化2
        // {
        //     num +=flag*j;    //分母的值
        //     sum +=1.0/num;    //每一次生成的值
        //     flag =-flag;     //判定正负号
        // }

        // flag = -flag;
        // num +=flag *i;  
        // sum +=1.0/num;  

        if(i%2==0)
        {
            sum -= 1.0/i;
        }
        else 
        {
            sum += 1.0/i;
        }
    }
    printf("%.3lf\n",sum);
    return 0;
}

编辑于 2024-04-21 14:10:10 回复(0)
#include <stdio.h>

int main() 
{
    double result = 0.0;
    int n = 0;
    int i = 0;

    scanf("%d", &n);

    for(i = 1; i <= n; i++)
    {
        if(i % 2 == 0)
            result -= 1.0 / i;
        else
            result += 1.0 / i;
    }

    printf("%.3lf\n", result);

    return 0;
}

编辑于 2024-04-05 21:30:03 回复(0)
#include <cmath>
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    double result=0;
    double temp=0;
    for(double i=1;i<=n;i++){
        temp=0;
        for(double j=1;j<=i;j++){
            temp+=pow(-1,j-1)*(2*j-1);
        }
        result += 1/temp;
    }
    printf("%.3lf",result);
}
// 64 位输出请用 printf("%lld")
编辑于 2024-03-20 15:27:06 回复(0)
#include <stdio.h>

int main() {
    
    int n =0;
    scanf("%d",&n);
    double sum =0.0;
    int i =0;
    int s = 1;//做符号
    int temp = 0;//做分母
    for(i = 1 ;i <= n;i++)
    {
       temp = s * i;
       sum += 1.0/temp;
       s = -s;   //符号改变正负
    }
    printf("%.3lf\n",sum);
    return 0;
}

编辑于 2024-03-15 13:54:05 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            double sum =0.0;
            double den = 0.0;
            int f = 1;
            for(double i =1.0;i<=a ;i++) {
                den+=f*(2*i-1);
                sum+= 1/den;
                f=-f;
            }
            System.out.println(String.format("%.3f",sum));
        }
    }
}

编辑于 2024-03-01 11:11:30 回复(0)
#include <stdio.h>
#include <stdbool.h>

// 判断奇偶
bool oddOrEven(int x) {
  if (x % 2 == 0) return true;
  else return false;
}

// 计算分母
int oddOp(int x) {
  int sum = 0;
  int n=1;
  for (int i = 1; i <= x; i++) {
    if (!oddOrEven(i)) {
      sum += n;
      n +=2;
    } else {
      sum -= n;
      n +=2;
    }
  }
  return sum;
}

int main() {
  int x;
  double result = 0;
  scanf("%d", &x);
  for (int i = 1; i <= x; i++) {
    result += (1.0) / oddOp(i);
  }

  printf("%.3lf\n", result);

  return 0;
}


发表于 2024-02-25 15:14:01 回复(0)
a = int(input())
b = 1
c = 0
d = 0
for i in range(1,2*a,2):
    if b % 2 == 0:
        i = -1*i
    d = i+d
    c = 1/d + c
    b = b+1
print(f'{c:.3f}')
   
编辑于 2024-02-11 18:23:31 回复(0)
各项的分母可作为数列
a = int(input())
s=0
for i in range(1,a+1):
    b=[((-1)**(n-1))*(2*n-1) for n in range(1,i+1)]
    s += 1/sum(b)
print("{:.3f}".format(s))


编辑于 2024-02-05 09:59:38 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
    int n;
    float sum;
    scanf("%d", &n);
    for(int i=1; i<=n; i++){
        int a=0;
        for(int x=1; x<=i; x++){
            a += (pow(-1,x-1)*(2*x-1));
        }
        sum += 1.0/a;
    }
    printf("%.3f", sum);
    return 0;
}
编辑于 2024-01-20 10:15:17 回复(0)
package main

import (
    "fmt"
)
func main() {
    var n int
    fmt.Scan(&n)
    if n == 1 {
        fmt.Printf("%.3f", 1.000)
        return 
    }
    var ans float64 = 1.0
    d, cur, t := 1.0, 1.0, -1.0
    for i := 2; i <= n; i++ {
        cur += 2
        d += cur * t
        t *= -1
        ans += 1.0 / d
    }

    fmt.Printf("%.3f", ans)
}
发表于 2023-12-20 02:32:54 回复(0)
#include <stdio.h>

int main()
{
    int i,n,j=1,flag=1;
    double sum=0,sum2=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        sum=sum+flag*j;
        flag=-flag;
        j+=2;
        sum2=sum2+1/sum;
    }
    printf("%.3lf",sum2);
    return 0;
}
发表于 2023-11-20 15:18:19 回复(0)
每次循环需要分母加上通项公式的值 除1.0  注意要用double  用单精度可能会出现精度不够
//BC85 牛牛学数列3
#include "stdio.h"
#include "math.h"
int main(){
    double n;
    scanf("%lf",&n);

    double denominator = 0;//分母
    double i;
    double sum = 0;
    for(i=1;i<=n;i++){
        denominator +=pow((-1),(i-1)) * ((2*i)-1);
        sum += (1.0) / denominator;
    }
    printf("%.3f",sum);
    return 0;
}


发表于 2023-11-18 00:10:29 回复(0)