• 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;

    }

      

  • 相关阅读:
    es6里面的arr方法
    for循环比较
    window.location各属性的值
    浏览器的缓存机制
    es6中的双箭头函数
    前端开发模拟数据------webpack-api-mocker
    对象的深拷贝和浅拷贝
    Web应用程序的安全问题
    this指向问题
    postman使用篇最全整理
  • 原文地址:https://www.cnblogs.com/Mrleon/p/8683983.html
Copyright © 2020-2023  润新知