首页 > 其他分享 >斐波那契数列(取模)

斐波那契数列(取模)

时间:2022-09-25 19:47:41浏览次数:50  
标签:取模 return 数列 int dfs 斐波 long 那契 include

题目:

菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。

给出一个正整数a,要求菲波那契数列中第a个数对1000取模的结果是多少。

输入
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a(1 <= a <= 1000000)。
输出
n行,每行输出对应一个输入。输出应是一个正整数,为菲波那契数列中第a个数对1000取模得到的结果。   1.递归
#include<iostream>
#include<cstdio>
using namespace std;

long long dfs(int i)
{
    if(i==1) return 1;
    if(i==2) return 1;
    return dfs(i-2)+dfs(i-1);
}


int main()
{
    int n,s,a;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        s=dfs(a);
        cout<<s%1000<<endl;
    }
    return 0;
}

2.记忆化搜索

#include<iostream>
#include<cstdio>
using namespace std;
long long f[60];
long long dfs(int i)
{
    if(i==1) return f[1]=1;
    if(i==2)  return f[2]=1;
    if(f[i]>0)  return f[i];
    return  f[i]=(dfs(i-1)+dfs(i-2))%1000;
}


int main()
{
    long long n,a;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        cout<<dfs(a)<<endl;
    }
    return 0;
}

3.递推

#include<iostream>
#include<cstdio>
//#define maxsize 1000005
int a[1000010];
using namespace std;
int main()
{
    int n,s;
    a[1]=a[2]=1;
    for(int i=3;i<=1000010;i++)
    {
        a[i]=a[i-1]+a[i-2];
        a[i]%=1000;
    }
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>s;
        cout<<a[s]<<endl;
    }
    return 0;
}

 

标签:取模,return,数列,int,dfs,斐波,long,那契,include
From: https://www.cnblogs.com/xdzxlsy/p/16728574.html

相关文章

  • 斐波那契数列(递归、记忆化搜索、递归)
    题目:菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。输入输入一行,......
  • 斐波那契查找算法
    斐波那契也称黄金分割法,通过黄金分割点找到mid值,即mid=low+F(k-1)-1 (F代表斐波那契数列)对F(k-1)-1的理解由斐波那契数列F[k]=F[k-1]+F[k-2]的性质,可以得到 (F[k]-1......
  • LeetCode 509 斐波那契数
    动态规划constintN=40;classSolution{public:intdp[N];intfib(intn){dp[1]=1;for(inti=2;i<=n;i++)......
  • 斐波那契数列
    斐波那契数列分析:斐波那契数列是后一个数等于前两个数之和,所以开一个变量存每个算出的数所在的位置,然后输出指定的第a个数的值。在这里开一个maxx,得出最大的a是谁,就把斐波......
  • 1. 斐波那契数 爬楼梯 使用最少花费爬楼梯
    1.斐波那契数版本一:一维数组记录型classSolution{public:intfib(intn){if(n<=1)returnn;std::vector<int>dp(n+1);......
  • 10.10 斐波那契数列_本章总结
      #斐波那契数列 计算  1,1,2,3,5,8  后面的数为前面两数相加deffib(n):ifn==1:return1elifn==2:return1else:......
  • python 用循环和递归分别实现斐波那契数列
    用循环和递归分别实现斐波那契数列#1\用for循环实现斐波那契数列res=[]foriinrange(10):ifi<2:res.append(1)else:res.append(res[i-......
  • 信息学奥赛一本通 1188:菲波那契数列(2)
    时间限制:1000ms      内存限制:65536KB提交数:46311   通过数:17428【题目描述】菲波那契数列是指这样的数列:数列的第一个和第二个数都为<spa......
  • CF446C(线段树+斐波那契)
    CF446C(线段树+斐波那契数列)CF链接洛谷链接题目大意:区间加斐波那契数列,区间求和分析:一眼鉴定为线段树难点在于如何打标记,合并和传递标记对于斐波那契数列有几个性......
  • C2解决斐波那契数列
    此题较为简单,只需定出后一项等于前两项之和即可代码如下1#include<stdio.h>2#defineN1003voidshow(inta[N])//定义一个函数4{5for(inti=1;i<=2......