弗洛伊德判圈法

嵌套的递推式取mod是存在循环节的

#include <cstdio>  
#include <iostream>  
using namespace std;  
#define LL __int64  
LL mod=1e9+7;  
int main()  
{  
    LL i,a,b,g;  
    a=1,b=0;  
    for(i=1;;i++)  
    {  
        g=(3*a+b)%mod;  
        b=a;  
        a=g;  
        if(a==1&&b==0)  
        {  
            if(i!=mod) {mod=i;}  
            else break;
            cout<<i<<endl;  
            i=1;
        }         
    }  
    return 0;  
}

 

posted @ 2018-09-26 21:06  Somnus、M  阅读(169)  评论(0编辑  收藏  举报