当前位置:首页 > 题解目录 > 正文内容

数列

亿万年的星光5年前 (2021-01-28)题解目录2079

【题目描述】

有一个分数序列image.png求出这个序列的前n项和,结果保留两位小数。(注意,不用通分,单项相加即可)

【输入描述】

一个数字,N

【输出描述】

前N项的和

【样例输入】

10

【样例输出】

16.48

【题目分析】

(1)第一眼看上去像斐波那契数列数列,但是不完全是,数列之间有一定的规律
(2)每个分数的分子是上一个分式分子分母的和(规律1)
(3)递归和循环都能解决这个问题
(4)横向来看,斐波那契数列,可以对分子分母分别使用(规律2)


【参考代码1】

采用循环的方式解决

#include<cstdio>
int main()
{
   int N;
   int i;
   double t,num,sum=0;
   double a=1,b=2;
   scanf("%d",&N); //读入n
   for(i=1;i<=N;i++) //
   {
        num=b/a; //当前分式的结果
        sum=sum+num; //累加过程
        t=b;  
        b=a+b; //下一次分式的分子等于上一次的分子加分母的和
        a=t;  
   }
printf("%.2f\n",sum);
   return 0;
}

【参考代码2】

采用递推的方式解决,按照要求,先把整个数列构造出来,然后再单独相加。

#include<cstdio>
#include<iostream>
using namespace std;
double a[100],b[100]; //定义分子和分母的数组  
double sum; //定义和
int main()
{
   a[1]=2,a[2]=3; //定义分子的初值
   b[1]=1,b[2]=2; //定义分母的初值
   int n; //定义n的范围
   cin>>n;
   for(int i=3;i<=n;i++)
   {
       a[i]=a[i-1]+a[i-2];
       b[i]=b[i-1]+b[i-2]; //对分子分母分别使用递推式
   }
   for(int i=1;i<=n;i++)
       sum+=a[i]/b[i];
   printf("%.2f",sum);
   return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:
    返回列表

    上一篇:质数环

    下一篇:猴子吃桃

    相关文章

    【题解】黑色联通块

    【题解】黑色联通块

    【题目描述】输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计其中黑色连通块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个联通块。如下图所示的图形有3个联通块。【输入描述】...

    【题解】单词接龙

    【题目描述】单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重...

    【题解】阶乘问题

    2.阶乘问题(fac.cpp)【题目描述】给定一个正整数n,求出一个最小的整数m并使得m!的末尾连续的0的个数小于n。m!=1*2*3*4*...*m【输入描述】第一行n。【输出描述】一个整数m。【样...

    【题解】分发饼干

    【题目描述】假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;...

    【题解】最长上升子序列

    【题目描述】一个数的序列bi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...

    【题解】统计自然数

    【题目描述】某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出...