Quad Tiling [POJ 3420]
http://poj.org/problem?id=3420
View Code
//矩阵乘法做递推 Matrix mat(16,16); void get_init() { mat.reset(); mat(0,15)=mat(1,14)=mat(2,13)=1; mat(3,12)=mat(3,15)=mat(4,11)=1; mat(5,10)=mat(6,9)=mat(6,15)=1; mat(7,8)=mat(7,14)=mat(7,11)=1; mat(8,7)=mat(9,6)=mat(10,5)=1; mat(11,4)=mat(11,7)=mat(12,15)=1; mat(12,3)=mat(13,2)=1; mat(13,14)=mat(14,1)=mat(14,7)=1; mat(14,13)=mat(15,12)=mat(15,6)=1; mat(15,15)=mat(15,3)=mat(15,0)=1; } void solve() { Matrix ans(16,16); ans=mat^N; printf("%d\n",ans(15,15)); } int main() { get_init(); while(scanf("%d%d",&N,&mod),N+mod) solve(); return 0; }