• 斐波那契数


    【题目描述】

    小明现在知道斐波那契数列中的第X个数模P后的值N,即Fabonacci(X) mod P = N,以及X可能的最大值M,如果再对于斐波那契数列中每一个数都模P,他想知道这个数可能出现在第几个。

    【输入描述】

    一行,共3个整数,第一个数为N,第二个数为P,第三个数为X可能的最大值M,三个数以空格隔开。

    【输出描述】

    一个整数,满足Fabonacci(i) mod P = N的最小的i,如果不存在则输出-1。

    【样例输入】

    3 7 5

    【样例输出】

    4

    【数据范围及提示】

    对于20%的数据,保证0 < M ≤ 50;

    对于50%的数据,保证0 < M ≤ 100;

    对于70%的数据,保证0 < M ≤ 500;

    对于100%的数据,保证0 < M ≤ 1000,0 ≤ N < P,P为素数且2 < P< 105。

    源代码:
    
    #include<cstdio>
    int m,n,p,f[1001];
    bool s(0);
    int main() //挺恶心的题。
    {
        scanf("%d%d%d",&n,&p,&m);
        f[2]=f[1]=1;
        for (int a=3;a<=m;a++)
        {
            f[a]=(f[a-1]+f[a-2])%p; //Fabonacci数列大约在200左右就会超过int范围。
            if (f[a]==n)
            {
                s=true;
                printf("%d",a);
                break;
            }
        }
        if (n==1) //别忘了f[1]和f[2]。
        {
            s=true;
            printf("1");
        }
        if (!s)
          printf("-1");
        return 0;
    }
  • 相关阅读:
    卡特兰数
    混合运算改进(代码)
    典型用户和场景
    混合运算
    四则运算
    计算
    感想
    git
    附加导航 affix,side--toolbar(可结合博客园使用~)
    对python-rrdtool模块的浅研究。
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5558492.html
Copyright © 2020-2023  润新知