弗洛伊德判圈法

嵌套的递推式取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;  
}
原文地址:https://www.cnblogs.com/Fy1999/p/9709715.html