zoukankan      html  css  js  c++  java
  • EOJ 3506. 斐波那契数列

    题意:给一个斐波那契数,问是斐波那契数列中的第几个,范围比较大是1到第1e5个斐波那契数

    题解:选几个大质数MOD一下,预处理出范围内的所有膜后的值,如果输入的数在取模后能够和某一项斐波那契数的膜一一对应,那么他很大概率的就是它

    #include <iostream>

    #include <cstring>

    #define ll long long

    #define fio ios::sync_with_stdio(false);cin.tie(0)

    const int N=2e5+5;

    using namespace std;

    int mod[]={10000019,99999721,10006333,1006277,10005559,99999787};

    int a[N][6];

    int main(){

        fio;

        for(int i=0;i<6;i++){

            a[1][i]=1,a[2][i]=2;

            for(int j=3;j<=100000;j++){

                a[j][i]=(a[j-1][i]+a[j-2][i])%mod[i];

            }

        }

        string str;

        ll cm[6];

        while(cin>>str){

            memset(cm,0,sizeof(cm));

            int len=str.length();

            for(int i=0;i<len;i++){

                for(int j=0;j<6;j++){

                    cm[j]=(cm[j]*10+str[i]-'0')%mod[j];

                }

            }

            for(int i=1;i<=100000;i++){

                int flag=0;

                for(int j=0;j<6;j++){

                    if(cm[j]!=a[i][j]){

                        flag=1;

                        break;

                    }

                }

                if(flag==0){

                    cout<<i<<endl;

                    break;

                }

            }

        }

        return 0;

    }

      

  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/Mrleon/p/8683983.html
Copyright © 2011-2022 走看看