凡是取模的都有迴圈節-----常數有,矩陣也有,並且矩陣的更奇妙:
g(g(g(n))) mod 10
9+ 7
最外層mod=1e9+7 能夠算出g(g(n))的迴圈節222222224。進而算出g(n)的迴圈節183120ll。然後由內而外計算就可以
凝視掉的是求迴圈節的**
//#pragma comment(linker, "/stack:102400000,102400000")
#include #include #include #include #include #include #include #include #include #include using namespace std;
#define ls(rt) rt*2
#define rs(rt) rt*2+1
#define ll long long
#define ull unsigned long long
#define rep(i,s,e) for(int i=s;i>1;
const double eps = 1e-8;
const double pi = acos(-1.0);
const int inf = 100000000;
const ll mod[3] = ;
const int n = 2;
struct matrix;
matrix i= ;
matrix unin=;
matrix matrixmul(matrix a,matrix b,long long mod)//矩陣a乘矩陣b
return b;
}ll solve(ll n)
return ret.m[0][0];
}int main()
if(n==1)
//printf("%i64d\n",solve(n));
cout << solve(n)%1000000007ll << endl;
}return 0;
}
hdu 4291 矩陣冪 迴圈節
矩陣快速冪 迴圈節 hdu4291
題意 given n 1 n 1018 you should solve for g g g n mod 109 7 where g n 3g n 1 g n 2 g 1 1 g 0 0 分析 這個遞推關係可以用矩陣快速冪來解決,但是這個題的問題是mod很大,會爆long long 並且超時的。那麼...
迴圈節 矩陣快速冪 HDU4291
迴圈節其實就可以看做取模,一般的1e9 7其實就是個迴圈節,只是大了點 切入正題 hdu4291 g x 很明顯的矩陣快速冪 本地直接暴力找迴圈節 ll a 0,b 1 for int i 2 i 一定要 開 long long 我沒開 long long 卡了乙個多小時嗚嗚嗚嗚嗚 三個g巢狀,就分...
矩陣快速冪 迴圈節 hdu4291
題意 given n 1 n 1018 you should solve for g g g n mod 109 7 where g n 3g n 1 g n 2 g 1 1 g 0 0 分析 這個遞推關係可以用矩陣快速冪來解決,但是這個題的問題是mod很大,會爆long long 並且超時的。那麼...